package org.xtext.example.autosar.parser.antlr.internal;

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.xtext.example.autosar.services.AutoSARGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalAutoSARParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'CompositionSWC'", "'{'", "'swc'", "','", "'}'", "'IB'", "'entity'", "'variable'", "'ClientServiceRPort'", "'data'", "'DataTo'", "'('", "')'", "'reciveFrom'", "'ClientServicePPort'", "'DataFrom'", "'postTo'", "'PostReciveRPort'", "'PostRecivePPort'", "'ApplicationSWC'", "'ib'", "'clientservicerport'", "'clientservicepport'", "'postreciverport'", "'postrecivepport'", "'ComplexDeviceDriverSWC'", "'Entity'", "'trigger'", "'WriteVariable'", "'ReadVariable'", "'Variable'", "'type'", "'value'", "'EJavaClass'", "'EJavaObject'", "'TIME'", "'VARIABLE'"
    };
    public static final int T__19=19;
    public static final int T__15=15;
    public static final int T__16=16;
    public static final int T__17=17;
    public static final int T__18=18;
    public static final int T__11=11;
    public static final int T__12=12;
    public static final int T__13=13;
    public static final int T__14=14;
    public static final int RULE_ID=5;
    public static final int T__26=26;
    public static final int T__27=27;
    public static final int T__28=28;
    public static final int RULE_INT=6;
    public static final int T__29=29;
    public static final int T__22=22;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__23=23;
    public static final int T__24=24;
    public static final int T__25=25;
    public static final int T__20=20;
    public static final int T__21=21;
    public static final int RULE_STRING=4;
    public static final int RULE_SL_COMMENT=8;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int EOF=-1;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int RULE_WS=9;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__42=42;
    public static final int T__43=43;

    // delegates
    // delegators


        public InternalAutoSARParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalAutoSARParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalAutoSARParser.tokenNames; }
    public String getGrammarFileName() { return "InternalAutoSAR.g"; }



     	private AutoSARGrammarAccess grammarAccess;

        public InternalAutoSARParser(TokenStream input, AutoSARGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }

        @Override
        protected String getFirstRuleName() {
        	return "CompositionSWC";
       	}

       	@Override
       	protected AutoSARGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}




    // $ANTLR start "entryRuleCompositionSWC"
    // InternalAutoSAR.g:65:1: entryRuleCompositionSWC returns [EObject current=null] : iv_ruleCompositionSWC= ruleCompositionSWC EOF ;
    public final EObject entryRuleCompositionSWC() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCompositionSWC = null;


        try {
            // InternalAutoSAR.g:65:55: (iv_ruleCompositionSWC= ruleCompositionSWC EOF )
            // InternalAutoSAR.g:66:2: iv_ruleCompositionSWC= ruleCompositionSWC EOF
            {
             newCompositeNode(grammarAccess.getCompositionSWCRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleCompositionSWC=ruleCompositionSWC();

            state._fsp--;

             current =iv_ruleCompositionSWC; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCompositionSWC"


    // $ANTLR start "ruleCompositionSWC"
    // InternalAutoSAR.g:72:1: ruleCompositionSWC returns [EObject current=null] : ( () otherlv_1= 'CompositionSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'swc' otherlv_5= '{' ( (lv_swc_6_0= ruleSWC ) ) (otherlv_7= ',' ( (lv_swc_8_0= ruleSWC ) ) )* otherlv_9= '}' )? otherlv_10= '}' ) ;
    public final EObject ruleCompositionSWC() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_swc_6_0 = null;

        EObject lv_swc_8_0 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:78:2: ( ( () otherlv_1= 'CompositionSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'swc' otherlv_5= '{' ( (lv_swc_6_0= ruleSWC ) ) (otherlv_7= ',' ( (lv_swc_8_0= ruleSWC ) ) )* otherlv_9= '}' )? otherlv_10= '}' ) )
            // InternalAutoSAR.g:79:2: ( () otherlv_1= 'CompositionSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'swc' otherlv_5= '{' ( (lv_swc_6_0= ruleSWC ) ) (otherlv_7= ',' ( (lv_swc_8_0= ruleSWC ) ) )* otherlv_9= '}' )? otherlv_10= '}' )
            {
            // InternalAutoSAR.g:79:2: ( () otherlv_1= 'CompositionSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'swc' otherlv_5= '{' ( (lv_swc_6_0= ruleSWC ) ) (otherlv_7= ',' ( (lv_swc_8_0= ruleSWC ) ) )* otherlv_9= '}' )? otherlv_10= '}' )
            // InternalAutoSAR.g:80:3: () otherlv_1= 'CompositionSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'swc' otherlv_5= '{' ( (lv_swc_6_0= ruleSWC ) ) (otherlv_7= ',' ( (lv_swc_8_0= ruleSWC ) ) )* otherlv_9= '}' )? otherlv_10= '}'
            {
            // InternalAutoSAR.g:80:3: ()
            // InternalAutoSAR.g:81:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getCompositionSWCAccess().getCompositionSWCAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,11,FOLLOW_3); 

            			newLeafNode(otherlv_1, grammarAccess.getCompositionSWCAccess().getCompositionSWCKeyword_1());
            		
            // InternalAutoSAR.g:91:3: ( (lv_name_2_0= ruleEString ) )
            // InternalAutoSAR.g:92:4: (lv_name_2_0= ruleEString )
            {
            // InternalAutoSAR.g:92:4: (lv_name_2_0= ruleEString )
            // InternalAutoSAR.g:93:5: lv_name_2_0= ruleEString
            {

            					newCompositeNode(grammarAccess.getCompositionSWCAccess().getNameEStringParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_4);
            lv_name_2_0=ruleEString();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getCompositionSWCRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.xtext.example.autosar.AutoSAR.EString");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_5); 

            			newLeafNode(otherlv_3, grammarAccess.getCompositionSWCAccess().getLeftCurlyBracketKeyword_3());
            		
            // InternalAutoSAR.g:114:3: (otherlv_4= 'swc' otherlv_5= '{' ( (lv_swc_6_0= ruleSWC ) ) (otherlv_7= ',' ( (lv_swc_8_0= ruleSWC ) ) )* otherlv_9= '}' )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==13) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // InternalAutoSAR.g:115:4: otherlv_4= 'swc' otherlv_5= '{' ( (lv_swc_6_0= ruleSWC ) ) (otherlv_7= ',' ( (lv_swc_8_0= ruleSWC ) ) )* otherlv_9= '}'
                    {
                    otherlv_4=(Token)match(input,13,FOLLOW_4); 

                    				newLeafNode(otherlv_4, grammarAccess.getCompositionSWCAccess().getSwcKeyword_4_0());
                    			
                    otherlv_5=(Token)match(input,12,FOLLOW_6); 

                    				newLeafNode(otherlv_5, grammarAccess.getCompositionSWCAccess().getLeftCurlyBracketKeyword_4_1());
                    			
                    // InternalAutoSAR.g:123:4: ( (lv_swc_6_0= ruleSWC ) )
                    // InternalAutoSAR.g:124:5: (lv_swc_6_0= ruleSWC )
                    {
                    // InternalAutoSAR.g:124:5: (lv_swc_6_0= ruleSWC )
                    // InternalAutoSAR.g:125:6: lv_swc_6_0= ruleSWC
                    {

                    						newCompositeNode(grammarAccess.getCompositionSWCAccess().getSwcSWCParserRuleCall_4_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_swc_6_0=ruleSWC();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getCompositionSWCRule());
                    						}
                    						add(
                    							current,
                    							"swc",
                    							lv_swc_6_0,
                    							"org.xtext.example.autosar.AutoSAR.SWC");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:142:4: (otherlv_7= ',' ( (lv_swc_8_0= ruleSWC ) ) )*
                    loop1:
                    do {
                        int alt1=2;
                        int LA1_0 = input.LA(1);

                        if ( (LA1_0==14) ) {
                            alt1=1;
                        }


                        switch (alt1) {
                    	case 1 :
                    	    // InternalAutoSAR.g:143:5: otherlv_7= ',' ( (lv_swc_8_0= ruleSWC ) )
                    	    {
                    	    otherlv_7=(Token)match(input,14,FOLLOW_6); 

                    	    					newLeafNode(otherlv_7, grammarAccess.getCompositionSWCAccess().getCommaKeyword_4_3_0());
                    	    				
                    	    // InternalAutoSAR.g:147:5: ( (lv_swc_8_0= ruleSWC ) )
                    	    // InternalAutoSAR.g:148:6: (lv_swc_8_0= ruleSWC )
                    	    {
                    	    // InternalAutoSAR.g:148:6: (lv_swc_8_0= ruleSWC )
                    	    // InternalAutoSAR.g:149:7: lv_swc_8_0= ruleSWC
                    	    {

                    	    							newCompositeNode(grammarAccess.getCompositionSWCAccess().getSwcSWCParserRuleCall_4_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_swc_8_0=ruleSWC();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getCompositionSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"swc",
                    	    								lv_swc_8_0,
                    	    								"org.xtext.example.autosar.AutoSAR.SWC");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop1;
                        }
                    } while (true);

                    otherlv_9=(Token)match(input,15,FOLLOW_8); 

                    				newLeafNode(otherlv_9, grammarAccess.getCompositionSWCAccess().getRightCurlyBracketKeyword_4_4());
                    			

                    }
                    break;

            }

            otherlv_10=(Token)match(input,15,FOLLOW_2); 

            			newLeafNode(otherlv_10, grammarAccess.getCompositionSWCAccess().getRightCurlyBracketKeyword_5());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCompositionSWC"


    // $ANTLR start "entryRuleSWC"
    // InternalAutoSAR.g:180:1: entryRuleSWC returns [EObject current=null] : iv_ruleSWC= ruleSWC EOF ;
    public final EObject entryRuleSWC() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSWC = null;


        try {
            // InternalAutoSAR.g:180:44: (iv_ruleSWC= ruleSWC EOF )
            // InternalAutoSAR.g:181:2: iv_ruleSWC= ruleSWC EOF
            {
             newCompositeNode(grammarAccess.getSWCRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleSWC=ruleSWC();

            state._fsp--;

             current =iv_ruleSWC; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSWC"


    // $ANTLR start "ruleSWC"
    // InternalAutoSAR.g:187:1: ruleSWC returns [EObject current=null] : (this_ApplicationSWC_0= ruleApplicationSWC | this_ComplexDeviceDriverSWC_1= ruleComplexDeviceDriverSWC ) ;
    public final EObject ruleSWC() throws RecognitionException {
        EObject current = null;

        EObject this_ApplicationSWC_0 = null;

        EObject this_ComplexDeviceDriverSWC_1 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:193:2: ( (this_ApplicationSWC_0= ruleApplicationSWC | this_ComplexDeviceDriverSWC_1= ruleComplexDeviceDriverSWC ) )
            // InternalAutoSAR.g:194:2: (this_ApplicationSWC_0= ruleApplicationSWC | this_ComplexDeviceDriverSWC_1= ruleComplexDeviceDriverSWC )
            {
            // InternalAutoSAR.g:194:2: (this_ApplicationSWC_0= ruleApplicationSWC | this_ComplexDeviceDriverSWC_1= ruleComplexDeviceDriverSWC )
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==30) ) {
                alt3=1;
            }
            else if ( (LA3_0==36) ) {
                alt3=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }
            switch (alt3) {
                case 1 :
                    // InternalAutoSAR.g:195:3: this_ApplicationSWC_0= ruleApplicationSWC
                    {

                    			newCompositeNode(grammarAccess.getSWCAccess().getApplicationSWCParserRuleCall_0());
                    		
                    pushFollow(FOLLOW_2);
                    this_ApplicationSWC_0=ruleApplicationSWC();

                    state._fsp--;


                    			current = this_ApplicationSWC_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalAutoSAR.g:204:3: this_ComplexDeviceDriverSWC_1= ruleComplexDeviceDriverSWC
                    {

                    			newCompositeNode(grammarAccess.getSWCAccess().getComplexDeviceDriverSWCParserRuleCall_1());
                    		
                    pushFollow(FOLLOW_2);
                    this_ComplexDeviceDriverSWC_1=ruleComplexDeviceDriverSWC();

                    state._fsp--;


                    			current = this_ComplexDeviceDriverSWC_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSWC"


    // $ANTLR start "entryRuleEString"
    // InternalAutoSAR.g:216:1: entryRuleEString returns [String current=null] : iv_ruleEString= ruleEString EOF ;
    public final String entryRuleEString() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleEString = null;


        try {
            // InternalAutoSAR.g:216:47: (iv_ruleEString= ruleEString EOF )
            // InternalAutoSAR.g:217:2: iv_ruleEString= ruleEString EOF
            {
             newCompositeNode(grammarAccess.getEStringRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleEString=ruleEString();

            state._fsp--;

             current =iv_ruleEString.getText(); 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEString"


    // $ANTLR start "ruleEString"
    // InternalAutoSAR.g:223:1: ruleEString returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID ) ;
    public final AntlrDatatypeRuleToken ruleEString() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_STRING_0=null;
        Token this_ID_1=null;


        	enterRule();

        try {
            // InternalAutoSAR.g:229:2: ( (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID ) )
            // InternalAutoSAR.g:230:2: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID )
            {
            // InternalAutoSAR.g:230:2: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==RULE_STRING) ) {
                alt4=1;
            }
            else if ( (LA4_0==RULE_ID) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // InternalAutoSAR.g:231:3: this_STRING_0= RULE_STRING
                    {
                    this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_2); 

                    			current.merge(this_STRING_0);
                    		

                    			newLeafNode(this_STRING_0, grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0());
                    		

                    }
                    break;
                case 2 :
                    // InternalAutoSAR.g:239:3: this_ID_1= RULE_ID
                    {
                    this_ID_1=(Token)match(input,RULE_ID,FOLLOW_2); 

                    			current.merge(this_ID_1);
                    		

                    			newLeafNode(this_ID_1, grammarAccess.getEStringAccess().getIDTerminalRuleCall_1());
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEString"


    // $ANTLR start "entryRuleIB"
    // InternalAutoSAR.g:250:1: entryRuleIB returns [EObject current=null] : iv_ruleIB= ruleIB EOF ;
    public final EObject entryRuleIB() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIB = null;


        try {
            // InternalAutoSAR.g:250:43: (iv_ruleIB= ruleIB EOF )
            // InternalAutoSAR.g:251:2: iv_ruleIB= ruleIB EOF
            {
             newCompositeNode(grammarAccess.getIBRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleIB=ruleIB();

            state._fsp--;

             current =iv_ruleIB; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIB"


    // $ANTLR start "ruleIB"
    // InternalAutoSAR.g:257:1: ruleIB returns [EObject current=null] : ( () otherlv_1= 'IB' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'entity' otherlv_5= '{' ( (lv_entity_6_0= ruleEntity ) ) (otherlv_7= ',' ( (lv_entity_8_0= ruleEntity ) ) )* otherlv_9= '}' )? (otherlv_10= 'variable' otherlv_11= '{' ( (lv_variable_12_0= ruleVariable ) ) (otherlv_13= ',' ( (lv_variable_14_0= ruleVariable ) ) )* otherlv_15= '}' )? otherlv_16= '}' ) ;
    public final EObject ruleIB() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_entity_6_0 = null;

        EObject lv_entity_8_0 = null;

        EObject lv_variable_12_0 = null;

        EObject lv_variable_14_0 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:263:2: ( ( () otherlv_1= 'IB' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'entity' otherlv_5= '{' ( (lv_entity_6_0= ruleEntity ) ) (otherlv_7= ',' ( (lv_entity_8_0= ruleEntity ) ) )* otherlv_9= '}' )? (otherlv_10= 'variable' otherlv_11= '{' ( (lv_variable_12_0= ruleVariable ) ) (otherlv_13= ',' ( (lv_variable_14_0= ruleVariable ) ) )* otherlv_15= '}' )? otherlv_16= '}' ) )
            // InternalAutoSAR.g:264:2: ( () otherlv_1= 'IB' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'entity' otherlv_5= '{' ( (lv_entity_6_0= ruleEntity ) ) (otherlv_7= ',' ( (lv_entity_8_0= ruleEntity ) ) )* otherlv_9= '}' )? (otherlv_10= 'variable' otherlv_11= '{' ( (lv_variable_12_0= ruleVariable ) ) (otherlv_13= ',' ( (lv_variable_14_0= ruleVariable ) ) )* otherlv_15= '}' )? otherlv_16= '}' )
            {
            // InternalAutoSAR.g:264:2: ( () otherlv_1= 'IB' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'entity' otherlv_5= '{' ( (lv_entity_6_0= ruleEntity ) ) (otherlv_7= ',' ( (lv_entity_8_0= ruleEntity ) ) )* otherlv_9= '}' )? (otherlv_10= 'variable' otherlv_11= '{' ( (lv_variable_12_0= ruleVariable ) ) (otherlv_13= ',' ( (lv_variable_14_0= ruleVariable ) ) )* otherlv_15= '}' )? otherlv_16= '}' )
            // InternalAutoSAR.g:265:3: () otherlv_1= 'IB' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'entity' otherlv_5= '{' ( (lv_entity_6_0= ruleEntity ) ) (otherlv_7= ',' ( (lv_entity_8_0= ruleEntity ) ) )* otherlv_9= '}' )? (otherlv_10= 'variable' otherlv_11= '{' ( (lv_variable_12_0= ruleVariable ) ) (otherlv_13= ',' ( (lv_variable_14_0= ruleVariable ) ) )* otherlv_15= '}' )? otherlv_16= '}'
            {
            // InternalAutoSAR.g:265:3: ()
            // InternalAutoSAR.g:266:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getIBAccess().getIBAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,16,FOLLOW_3); 

            			newLeafNode(otherlv_1, grammarAccess.getIBAccess().getIBKeyword_1());
            		
            // InternalAutoSAR.g:276:3: ( (lv_name_2_0= ruleEString ) )
            // InternalAutoSAR.g:277:4: (lv_name_2_0= ruleEString )
            {
            // InternalAutoSAR.g:277:4: (lv_name_2_0= ruleEString )
            // InternalAutoSAR.g:278:5: lv_name_2_0= ruleEString
            {

            					newCompositeNode(grammarAccess.getIBAccess().getNameEStringParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_4);
            lv_name_2_0=ruleEString();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getIBRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.xtext.example.autosar.AutoSAR.EString");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_9); 

            			newLeafNode(otherlv_3, grammarAccess.getIBAccess().getLeftCurlyBracketKeyword_3());
            		
            // InternalAutoSAR.g:299:3: (otherlv_4= 'entity' otherlv_5= '{' ( (lv_entity_6_0= ruleEntity ) ) (otherlv_7= ',' ( (lv_entity_8_0= ruleEntity ) ) )* otherlv_9= '}' )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==17) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // InternalAutoSAR.g:300:4: otherlv_4= 'entity' otherlv_5= '{' ( (lv_entity_6_0= ruleEntity ) ) (otherlv_7= ',' ( (lv_entity_8_0= ruleEntity ) ) )* otherlv_9= '}'
                    {
                    otherlv_4=(Token)match(input,17,FOLLOW_4); 

                    				newLeafNode(otherlv_4, grammarAccess.getIBAccess().getEntityKeyword_4_0());
                    			
                    otherlv_5=(Token)match(input,12,FOLLOW_10); 

                    				newLeafNode(otherlv_5, grammarAccess.getIBAccess().getLeftCurlyBracketKeyword_4_1());
                    			
                    // InternalAutoSAR.g:308:4: ( (lv_entity_6_0= ruleEntity ) )
                    // InternalAutoSAR.g:309:5: (lv_entity_6_0= ruleEntity )
                    {
                    // InternalAutoSAR.g:309:5: (lv_entity_6_0= ruleEntity )
                    // InternalAutoSAR.g:310:6: lv_entity_6_0= ruleEntity
                    {

                    						newCompositeNode(grammarAccess.getIBAccess().getEntityEntityParserRuleCall_4_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_entity_6_0=ruleEntity();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getIBRule());
                    						}
                    						add(
                    							current,
                    							"entity",
                    							lv_entity_6_0,
                    							"org.xtext.example.autosar.AutoSAR.Entity");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:327:4: (otherlv_7= ',' ( (lv_entity_8_0= ruleEntity ) ) )*
                    loop5:
                    do {
                        int alt5=2;
                        int LA5_0 = input.LA(1);

                        if ( (LA5_0==14) ) {
                            alt5=1;
                        }


                        switch (alt5) {
                    	case 1 :
                    	    // InternalAutoSAR.g:328:5: otherlv_7= ',' ( (lv_entity_8_0= ruleEntity ) )
                    	    {
                    	    otherlv_7=(Token)match(input,14,FOLLOW_10); 

                    	    					newLeafNode(otherlv_7, grammarAccess.getIBAccess().getCommaKeyword_4_3_0());
                    	    				
                    	    // InternalAutoSAR.g:332:5: ( (lv_entity_8_0= ruleEntity ) )
                    	    // InternalAutoSAR.g:333:6: (lv_entity_8_0= ruleEntity )
                    	    {
                    	    // InternalAutoSAR.g:333:6: (lv_entity_8_0= ruleEntity )
                    	    // InternalAutoSAR.g:334:7: lv_entity_8_0= ruleEntity
                    	    {

                    	    							newCompositeNode(grammarAccess.getIBAccess().getEntityEntityParserRuleCall_4_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_entity_8_0=ruleEntity();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getIBRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"entity",
                    	    								lv_entity_8_0,
                    	    								"org.xtext.example.autosar.AutoSAR.Entity");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop5;
                        }
                    } while (true);

                    otherlv_9=(Token)match(input,15,FOLLOW_11); 

                    				newLeafNode(otherlv_9, grammarAccess.getIBAccess().getRightCurlyBracketKeyword_4_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:357:3: (otherlv_10= 'variable' otherlv_11= '{' ( (lv_variable_12_0= ruleVariable ) ) (otherlv_13= ',' ( (lv_variable_14_0= ruleVariable ) ) )* otherlv_15= '}' )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==18) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // InternalAutoSAR.g:358:4: otherlv_10= 'variable' otherlv_11= '{' ( (lv_variable_12_0= ruleVariable ) ) (otherlv_13= ',' ( (lv_variable_14_0= ruleVariable ) ) )* otherlv_15= '}'
                    {
                    otherlv_10=(Token)match(input,18,FOLLOW_4); 

                    				newLeafNode(otherlv_10, grammarAccess.getIBAccess().getVariableKeyword_5_0());
                    			
                    otherlv_11=(Token)match(input,12,FOLLOW_12); 

                    				newLeafNode(otherlv_11, grammarAccess.getIBAccess().getLeftCurlyBracketKeyword_5_1());
                    			
                    // InternalAutoSAR.g:366:4: ( (lv_variable_12_0= ruleVariable ) )
                    // InternalAutoSAR.g:367:5: (lv_variable_12_0= ruleVariable )
                    {
                    // InternalAutoSAR.g:367:5: (lv_variable_12_0= ruleVariable )
                    // InternalAutoSAR.g:368:6: lv_variable_12_0= ruleVariable
                    {

                    						newCompositeNode(grammarAccess.getIBAccess().getVariableVariableParserRuleCall_5_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_variable_12_0=ruleVariable();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getIBRule());
                    						}
                    						add(
                    							current,
                    							"variable",
                    							lv_variable_12_0,
                    							"org.xtext.example.autosar.AutoSAR.Variable");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:385:4: (otherlv_13= ',' ( (lv_variable_14_0= ruleVariable ) ) )*
                    loop7:
                    do {
                        int alt7=2;
                        int LA7_0 = input.LA(1);

                        if ( (LA7_0==14) ) {
                            alt7=1;
                        }


                        switch (alt7) {
                    	case 1 :
                    	    // InternalAutoSAR.g:386:5: otherlv_13= ',' ( (lv_variable_14_0= ruleVariable ) )
                    	    {
                    	    otherlv_13=(Token)match(input,14,FOLLOW_12); 

                    	    					newLeafNode(otherlv_13, grammarAccess.getIBAccess().getCommaKeyword_5_3_0());
                    	    				
                    	    // InternalAutoSAR.g:390:5: ( (lv_variable_14_0= ruleVariable ) )
                    	    // InternalAutoSAR.g:391:6: (lv_variable_14_0= ruleVariable )
                    	    {
                    	    // InternalAutoSAR.g:391:6: (lv_variable_14_0= ruleVariable )
                    	    // InternalAutoSAR.g:392:7: lv_variable_14_0= ruleVariable
                    	    {

                    	    							newCompositeNode(grammarAccess.getIBAccess().getVariableVariableParserRuleCall_5_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_variable_14_0=ruleVariable();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getIBRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"variable",
                    	    								lv_variable_14_0,
                    	    								"org.xtext.example.autosar.AutoSAR.Variable");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop7;
                        }
                    } while (true);

                    otherlv_15=(Token)match(input,15,FOLLOW_8); 

                    				newLeafNode(otherlv_15, grammarAccess.getIBAccess().getRightCurlyBracketKeyword_5_4());
                    			

                    }
                    break;

            }

            otherlv_16=(Token)match(input,15,FOLLOW_2); 

            			newLeafNode(otherlv_16, grammarAccess.getIBAccess().getRightCurlyBracketKeyword_6());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIB"


    // $ANTLR start "entryRuleClientServiceRPort"
    // InternalAutoSAR.g:423:1: entryRuleClientServiceRPort returns [EObject current=null] : iv_ruleClientServiceRPort= ruleClientServiceRPort EOF ;
    public final EObject entryRuleClientServiceRPort() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClientServiceRPort = null;


        try {
            // InternalAutoSAR.g:423:59: (iv_ruleClientServiceRPort= ruleClientServiceRPort EOF )
            // InternalAutoSAR.g:424:2: iv_ruleClientServiceRPort= ruleClientServiceRPort EOF
            {
             newCompositeNode(grammarAccess.getClientServiceRPortRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleClientServiceRPort=ruleClientServiceRPort();

            state._fsp--;

             current =iv_ruleClientServiceRPort; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClientServiceRPort"


    // $ANTLR start "ruleClientServiceRPort"
    // InternalAutoSAR.g:430:1: ruleClientServiceRPort returns [EObject current=null] : ( () otherlv_1= 'ClientServiceRPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'reciveFrom' ( ( ruleEString ) ) )? otherlv_14= '}' ) ;
    public final EObject ruleClientServiceRPort() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        AntlrDatatypeRuleToken lv_data_5_0 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:436:2: ( ( () otherlv_1= 'ClientServiceRPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'reciveFrom' ( ( ruleEString ) ) )? otherlv_14= '}' ) )
            // InternalAutoSAR.g:437:2: ( () otherlv_1= 'ClientServiceRPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'reciveFrom' ( ( ruleEString ) ) )? otherlv_14= '}' )
            {
            // InternalAutoSAR.g:437:2: ( () otherlv_1= 'ClientServiceRPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'reciveFrom' ( ( ruleEString ) ) )? otherlv_14= '}' )
            // InternalAutoSAR.g:438:3: () otherlv_1= 'ClientServiceRPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'reciveFrom' ( ( ruleEString ) ) )? otherlv_14= '}'
            {
            // InternalAutoSAR.g:438:3: ()
            // InternalAutoSAR.g:439:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getClientServiceRPortAccess().getClientServiceRPortAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,19,FOLLOW_3); 

            			newLeafNode(otherlv_1, grammarAccess.getClientServiceRPortAccess().getClientServiceRPortKeyword_1());
            		
            // InternalAutoSAR.g:449:3: ( (lv_name_2_0= ruleEString ) )
            // InternalAutoSAR.g:450:4: (lv_name_2_0= ruleEString )
            {
            // InternalAutoSAR.g:450:4: (lv_name_2_0= ruleEString )
            // InternalAutoSAR.g:451:5: lv_name_2_0= ruleEString
            {

            					newCompositeNode(grammarAccess.getClientServiceRPortAccess().getNameEStringParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_4);
            lv_name_2_0=ruleEString();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getClientServiceRPortRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.xtext.example.autosar.AutoSAR.EString");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_13); 

            			newLeafNode(otherlv_3, grammarAccess.getClientServiceRPortAccess().getLeftCurlyBracketKeyword_3());
            		
            // InternalAutoSAR.g:472:3: (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==20) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // InternalAutoSAR.g:473:4: otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) )
                    {
                    otherlv_4=(Token)match(input,20,FOLLOW_14); 

                    				newLeafNode(otherlv_4, grammarAccess.getClientServiceRPortAccess().getDataKeyword_4_0());
                    			
                    // InternalAutoSAR.g:477:4: ( (lv_data_5_0= ruleEJavaClass ) )
                    // InternalAutoSAR.g:478:5: (lv_data_5_0= ruleEJavaClass )
                    {
                    // InternalAutoSAR.g:478:5: (lv_data_5_0= ruleEJavaClass )
                    // InternalAutoSAR.g:479:6: lv_data_5_0= ruleEJavaClass
                    {

                    						newCompositeNode(grammarAccess.getClientServiceRPortAccess().getDataEJavaClassParserRuleCall_4_1_0());
                    					
                    pushFollow(FOLLOW_15);
                    lv_data_5_0=ruleEJavaClass();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getClientServiceRPortRule());
                    						}
                    						set(
                    							current,
                    							"data",
                    							lv_data_5_0,
                    							"org.xtext.example.autosar.AutoSAR.EJavaClass");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalAutoSAR.g:497:3: (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==21) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // InternalAutoSAR.g:498:4: otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')'
                    {
                    otherlv_6=(Token)match(input,21,FOLLOW_16); 

                    				newLeafNode(otherlv_6, grammarAccess.getClientServiceRPortAccess().getDataToKeyword_5_0());
                    			
                    otherlv_7=(Token)match(input,22,FOLLOW_3); 

                    				newLeafNode(otherlv_7, grammarAccess.getClientServiceRPortAccess().getLeftParenthesisKeyword_5_1());
                    			
                    // InternalAutoSAR.g:506:4: ( ( ruleEString ) )
                    // InternalAutoSAR.g:507:5: ( ruleEString )
                    {
                    // InternalAutoSAR.g:507:5: ( ruleEString )
                    // InternalAutoSAR.g:508:6: ruleEString
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getClientServiceRPortRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getClientServiceRPortAccess().getDataToEntityCrossReference_5_2_0());
                    					
                    pushFollow(FOLLOW_17);
                    ruleEString();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:522:4: (otherlv_9= ',' ( ( ruleEString ) ) )*
                    loop10:
                    do {
                        int alt10=2;
                        int LA10_0 = input.LA(1);

                        if ( (LA10_0==14) ) {
                            alt10=1;
                        }


                        switch (alt10) {
                    	case 1 :
                    	    // InternalAutoSAR.g:523:5: otherlv_9= ',' ( ( ruleEString ) )
                    	    {
                    	    otherlv_9=(Token)match(input,14,FOLLOW_3); 

                    	    					newLeafNode(otherlv_9, grammarAccess.getClientServiceRPortAccess().getCommaKeyword_5_3_0());
                    	    				
                    	    // InternalAutoSAR.g:527:5: ( ( ruleEString ) )
                    	    // InternalAutoSAR.g:528:6: ( ruleEString )
                    	    {
                    	    // InternalAutoSAR.g:528:6: ( ruleEString )
                    	    // InternalAutoSAR.g:529:7: ruleEString
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getClientServiceRPortRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getClientServiceRPortAccess().getDataToEntityCrossReference_5_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_17);
                    	    ruleEString();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop10;
                        }
                    } while (true);

                    otherlv_11=(Token)match(input,23,FOLLOW_18); 

                    				newLeafNode(otherlv_11, grammarAccess.getClientServiceRPortAccess().getRightParenthesisKeyword_5_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:549:3: (otherlv_12= 'reciveFrom' ( ( ruleEString ) ) )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==24) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // InternalAutoSAR.g:550:4: otherlv_12= 'reciveFrom' ( ( ruleEString ) )
                    {
                    otherlv_12=(Token)match(input,24,FOLLOW_3); 

                    				newLeafNode(otherlv_12, grammarAccess.getClientServiceRPortAccess().getReciveFromKeyword_6_0());
                    			
                    // InternalAutoSAR.g:554:4: ( ( ruleEString ) )
                    // InternalAutoSAR.g:555:5: ( ruleEString )
                    {
                    // InternalAutoSAR.g:555:5: ( ruleEString )
                    // InternalAutoSAR.g:556:6: ruleEString
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getClientServiceRPortRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getClientServiceRPortAccess().getReciveFromClientServicePPortCrossReference_6_1_0());
                    					
                    pushFollow(FOLLOW_8);
                    ruleEString();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_14=(Token)match(input,15,FOLLOW_2); 

            			newLeafNode(otherlv_14, grammarAccess.getClientServiceRPortAccess().getRightCurlyBracketKeyword_7());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClientServiceRPort"


    // $ANTLR start "entryRuleClientServicePPort"
    // InternalAutoSAR.g:579:1: entryRuleClientServicePPort returns [EObject current=null] : iv_ruleClientServicePPort= ruleClientServicePPort EOF ;
    public final EObject entryRuleClientServicePPort() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClientServicePPort = null;


        try {
            // InternalAutoSAR.g:579:59: (iv_ruleClientServicePPort= ruleClientServicePPort EOF )
            // InternalAutoSAR.g:580:2: iv_ruleClientServicePPort= ruleClientServicePPort EOF
            {
             newCompositeNode(grammarAccess.getClientServicePPortRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleClientServicePPort=ruleClientServicePPort();

            state._fsp--;

             current =iv_ruleClientServicePPort; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClientServicePPort"


    // $ANTLR start "ruleClientServicePPort"
    // InternalAutoSAR.g:586:1: ruleClientServicePPort returns [EObject current=null] : ( () otherlv_1= 'ClientServicePPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'postTo' ( ( ruleEString ) ) )? otherlv_14= '}' ) ;
    public final EObject ruleClientServicePPort() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        AntlrDatatypeRuleToken lv_data_5_0 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:592:2: ( ( () otherlv_1= 'ClientServicePPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'postTo' ( ( ruleEString ) ) )? otherlv_14= '}' ) )
            // InternalAutoSAR.g:593:2: ( () otherlv_1= 'ClientServicePPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'postTo' ( ( ruleEString ) ) )? otherlv_14= '}' )
            {
            // InternalAutoSAR.g:593:2: ( () otherlv_1= 'ClientServicePPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'postTo' ( ( ruleEString ) ) )? otherlv_14= '}' )
            // InternalAutoSAR.g:594:3: () otherlv_1= 'ClientServicePPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'postTo' ( ( ruleEString ) ) )? otherlv_14= '}'
            {
            // InternalAutoSAR.g:594:3: ()
            // InternalAutoSAR.g:595:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getClientServicePPortAccess().getClientServicePPortAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,25,FOLLOW_3); 

            			newLeafNode(otherlv_1, grammarAccess.getClientServicePPortAccess().getClientServicePPortKeyword_1());
            		
            // InternalAutoSAR.g:605:3: ( (lv_name_2_0= ruleEString ) )
            // InternalAutoSAR.g:606:4: (lv_name_2_0= ruleEString )
            {
            // InternalAutoSAR.g:606:4: (lv_name_2_0= ruleEString )
            // InternalAutoSAR.g:607:5: lv_name_2_0= ruleEString
            {

            					newCompositeNode(grammarAccess.getClientServicePPortAccess().getNameEStringParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_4);
            lv_name_2_0=ruleEString();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getClientServicePPortRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.xtext.example.autosar.AutoSAR.EString");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_19); 

            			newLeafNode(otherlv_3, grammarAccess.getClientServicePPortAccess().getLeftCurlyBracketKeyword_3());
            		
            // InternalAutoSAR.g:628:3: (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==20) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // InternalAutoSAR.g:629:4: otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) )
                    {
                    otherlv_4=(Token)match(input,20,FOLLOW_14); 

                    				newLeafNode(otherlv_4, grammarAccess.getClientServicePPortAccess().getDataKeyword_4_0());
                    			
                    // InternalAutoSAR.g:633:4: ( (lv_data_5_0= ruleEJavaClass ) )
                    // InternalAutoSAR.g:634:5: (lv_data_5_0= ruleEJavaClass )
                    {
                    // InternalAutoSAR.g:634:5: (lv_data_5_0= ruleEJavaClass )
                    // InternalAutoSAR.g:635:6: lv_data_5_0= ruleEJavaClass
                    {

                    						newCompositeNode(grammarAccess.getClientServicePPortAccess().getDataEJavaClassParserRuleCall_4_1_0());
                    					
                    pushFollow(FOLLOW_20);
                    lv_data_5_0=ruleEJavaClass();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getClientServicePPortRule());
                    						}
                    						set(
                    							current,
                    							"data",
                    							lv_data_5_0,
                    							"org.xtext.example.autosar.AutoSAR.EJavaClass");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalAutoSAR.g:653:3: (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==26) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // InternalAutoSAR.g:654:4: otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')'
                    {
                    otherlv_6=(Token)match(input,26,FOLLOW_16); 

                    				newLeafNode(otherlv_6, grammarAccess.getClientServicePPortAccess().getDataFromKeyword_5_0());
                    			
                    otherlv_7=(Token)match(input,22,FOLLOW_3); 

                    				newLeafNode(otherlv_7, grammarAccess.getClientServicePPortAccess().getLeftParenthesisKeyword_5_1());
                    			
                    // InternalAutoSAR.g:662:4: ( ( ruleEString ) )
                    // InternalAutoSAR.g:663:5: ( ruleEString )
                    {
                    // InternalAutoSAR.g:663:5: ( ruleEString )
                    // InternalAutoSAR.g:664:6: ruleEString
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getClientServicePPortRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getClientServicePPortAccess().getDataFromEntityCrossReference_5_2_0());
                    					
                    pushFollow(FOLLOW_17);
                    ruleEString();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:678:4: (otherlv_9= ',' ( ( ruleEString ) ) )*
                    loop14:
                    do {
                        int alt14=2;
                        int LA14_0 = input.LA(1);

                        if ( (LA14_0==14) ) {
                            alt14=1;
                        }


                        switch (alt14) {
                    	case 1 :
                    	    // InternalAutoSAR.g:679:5: otherlv_9= ',' ( ( ruleEString ) )
                    	    {
                    	    otherlv_9=(Token)match(input,14,FOLLOW_3); 

                    	    					newLeafNode(otherlv_9, grammarAccess.getClientServicePPortAccess().getCommaKeyword_5_3_0());
                    	    				
                    	    // InternalAutoSAR.g:683:5: ( ( ruleEString ) )
                    	    // InternalAutoSAR.g:684:6: ( ruleEString )
                    	    {
                    	    // InternalAutoSAR.g:684:6: ( ruleEString )
                    	    // InternalAutoSAR.g:685:7: ruleEString
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getClientServicePPortRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getClientServicePPortAccess().getDataFromEntityCrossReference_5_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_17);
                    	    ruleEString();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop14;
                        }
                    } while (true);

                    otherlv_11=(Token)match(input,23,FOLLOW_21); 

                    				newLeafNode(otherlv_11, grammarAccess.getClientServicePPortAccess().getRightParenthesisKeyword_5_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:705:3: (otherlv_12= 'postTo' ( ( ruleEString ) ) )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==27) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // InternalAutoSAR.g:706:4: otherlv_12= 'postTo' ( ( ruleEString ) )
                    {
                    otherlv_12=(Token)match(input,27,FOLLOW_3); 

                    				newLeafNode(otherlv_12, grammarAccess.getClientServicePPortAccess().getPostToKeyword_6_0());
                    			
                    // InternalAutoSAR.g:710:4: ( ( ruleEString ) )
                    // InternalAutoSAR.g:711:5: ( ruleEString )
                    {
                    // InternalAutoSAR.g:711:5: ( ruleEString )
                    // InternalAutoSAR.g:712:6: ruleEString
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getClientServicePPortRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getClientServicePPortAccess().getPostToClientServiceRPortCrossReference_6_1_0());
                    					
                    pushFollow(FOLLOW_8);
                    ruleEString();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_14=(Token)match(input,15,FOLLOW_2); 

            			newLeafNode(otherlv_14, grammarAccess.getClientServicePPortAccess().getRightCurlyBracketKeyword_7());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClientServicePPort"


    // $ANTLR start "entryRulePostReciveRPort"
    // InternalAutoSAR.g:735:1: entryRulePostReciveRPort returns [EObject current=null] : iv_rulePostReciveRPort= rulePostReciveRPort EOF ;
    public final EObject entryRulePostReciveRPort() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePostReciveRPort = null;


        try {
            // InternalAutoSAR.g:735:56: (iv_rulePostReciveRPort= rulePostReciveRPort EOF )
            // InternalAutoSAR.g:736:2: iv_rulePostReciveRPort= rulePostReciveRPort EOF
            {
             newCompositeNode(grammarAccess.getPostReciveRPortRule()); 
            pushFollow(FOLLOW_1);
            iv_rulePostReciveRPort=rulePostReciveRPort();

            state._fsp--;

             current =iv_rulePostReciveRPort; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePostReciveRPort"


    // $ANTLR start "rulePostReciveRPort"
    // InternalAutoSAR.g:742:1: rulePostReciveRPort returns [EObject current=null] : ( () otherlv_1= 'PostReciveRPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'reciveFrom' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' ) ;
    public final EObject rulePostReciveRPort() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_17=null;
        Token otherlv_18=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        AntlrDatatypeRuleToken lv_data_5_0 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:748:2: ( ( () otherlv_1= 'PostReciveRPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'reciveFrom' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' ) )
            // InternalAutoSAR.g:749:2: ( () otherlv_1= 'PostReciveRPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'reciveFrom' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' )
            {
            // InternalAutoSAR.g:749:2: ( () otherlv_1= 'PostReciveRPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'reciveFrom' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' )
            // InternalAutoSAR.g:750:3: () otherlv_1= 'PostReciveRPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'reciveFrom' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}'
            {
            // InternalAutoSAR.g:750:3: ()
            // InternalAutoSAR.g:751:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getPostReciveRPortAccess().getPostReciveRPortAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,28,FOLLOW_3); 

            			newLeafNode(otherlv_1, grammarAccess.getPostReciveRPortAccess().getPostReciveRPortKeyword_1());
            		
            // InternalAutoSAR.g:761:3: ( (lv_name_2_0= ruleEString ) )
            // InternalAutoSAR.g:762:4: (lv_name_2_0= ruleEString )
            {
            // InternalAutoSAR.g:762:4: (lv_name_2_0= ruleEString )
            // InternalAutoSAR.g:763:5: lv_name_2_0= ruleEString
            {

            					newCompositeNode(grammarAccess.getPostReciveRPortAccess().getNameEStringParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_4);
            lv_name_2_0=ruleEString();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getPostReciveRPortRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.xtext.example.autosar.AutoSAR.EString");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_13); 

            			newLeafNode(otherlv_3, grammarAccess.getPostReciveRPortAccess().getLeftCurlyBracketKeyword_3());
            		
            // InternalAutoSAR.g:784:3: (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )?
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==20) ) {
                alt17=1;
            }
            switch (alt17) {
                case 1 :
                    // InternalAutoSAR.g:785:4: otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) )
                    {
                    otherlv_4=(Token)match(input,20,FOLLOW_14); 

                    				newLeafNode(otherlv_4, grammarAccess.getPostReciveRPortAccess().getDataKeyword_4_0());
                    			
                    // InternalAutoSAR.g:789:4: ( (lv_data_5_0= ruleEJavaClass ) )
                    // InternalAutoSAR.g:790:5: (lv_data_5_0= ruleEJavaClass )
                    {
                    // InternalAutoSAR.g:790:5: (lv_data_5_0= ruleEJavaClass )
                    // InternalAutoSAR.g:791:6: lv_data_5_0= ruleEJavaClass
                    {

                    						newCompositeNode(grammarAccess.getPostReciveRPortAccess().getDataEJavaClassParserRuleCall_4_1_0());
                    					
                    pushFollow(FOLLOW_15);
                    lv_data_5_0=ruleEJavaClass();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getPostReciveRPortRule());
                    						}
                    						set(
                    							current,
                    							"data",
                    							lv_data_5_0,
                    							"org.xtext.example.autosar.AutoSAR.EJavaClass");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalAutoSAR.g:809:3: (otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==21) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // InternalAutoSAR.g:810:4: otherlv_6= 'DataTo' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')'
                    {
                    otherlv_6=(Token)match(input,21,FOLLOW_16); 

                    				newLeafNode(otherlv_6, grammarAccess.getPostReciveRPortAccess().getDataToKeyword_5_0());
                    			
                    otherlv_7=(Token)match(input,22,FOLLOW_3); 

                    				newLeafNode(otherlv_7, grammarAccess.getPostReciveRPortAccess().getLeftParenthesisKeyword_5_1());
                    			
                    // InternalAutoSAR.g:818:4: ( ( ruleEString ) )
                    // InternalAutoSAR.g:819:5: ( ruleEString )
                    {
                    // InternalAutoSAR.g:819:5: ( ruleEString )
                    // InternalAutoSAR.g:820:6: ruleEString
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPostReciveRPortRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getPostReciveRPortAccess().getDataToEntityCrossReference_5_2_0());
                    					
                    pushFollow(FOLLOW_17);
                    ruleEString();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:834:4: (otherlv_9= ',' ( ( ruleEString ) ) )*
                    loop18:
                    do {
                        int alt18=2;
                        int LA18_0 = input.LA(1);

                        if ( (LA18_0==14) ) {
                            alt18=1;
                        }


                        switch (alt18) {
                    	case 1 :
                    	    // InternalAutoSAR.g:835:5: otherlv_9= ',' ( ( ruleEString ) )
                    	    {
                    	    otherlv_9=(Token)match(input,14,FOLLOW_3); 

                    	    					newLeafNode(otherlv_9, grammarAccess.getPostReciveRPortAccess().getCommaKeyword_5_3_0());
                    	    				
                    	    // InternalAutoSAR.g:839:5: ( ( ruleEString ) )
                    	    // InternalAutoSAR.g:840:6: ( ruleEString )
                    	    {
                    	    // InternalAutoSAR.g:840:6: ( ruleEString )
                    	    // InternalAutoSAR.g:841:7: ruleEString
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getPostReciveRPortRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getPostReciveRPortAccess().getDataToEntityCrossReference_5_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_17);
                    	    ruleEString();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop18;
                        }
                    } while (true);

                    otherlv_11=(Token)match(input,23,FOLLOW_18); 

                    				newLeafNode(otherlv_11, grammarAccess.getPostReciveRPortAccess().getRightParenthesisKeyword_5_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:861:3: (otherlv_12= 'reciveFrom' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==24) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // InternalAutoSAR.g:862:4: otherlv_12= 'reciveFrom' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')'
                    {
                    otherlv_12=(Token)match(input,24,FOLLOW_16); 

                    				newLeafNode(otherlv_12, grammarAccess.getPostReciveRPortAccess().getReciveFromKeyword_6_0());
                    			
                    otherlv_13=(Token)match(input,22,FOLLOW_3); 

                    				newLeafNode(otherlv_13, grammarAccess.getPostReciveRPortAccess().getLeftParenthesisKeyword_6_1());
                    			
                    // InternalAutoSAR.g:870:4: ( ( ruleEString ) )
                    // InternalAutoSAR.g:871:5: ( ruleEString )
                    {
                    // InternalAutoSAR.g:871:5: ( ruleEString )
                    // InternalAutoSAR.g:872:6: ruleEString
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPostReciveRPortRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getPostReciveRPortAccess().getReciveFromPostRecivePPortCrossReference_6_2_0());
                    					
                    pushFollow(FOLLOW_17);
                    ruleEString();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:886:4: (otherlv_15= ',' ( ( ruleEString ) ) )*
                    loop20:
                    do {
                        int alt20=2;
                        int LA20_0 = input.LA(1);

                        if ( (LA20_0==14) ) {
                            alt20=1;
                        }


                        switch (alt20) {
                    	case 1 :
                    	    // InternalAutoSAR.g:887:5: otherlv_15= ',' ( ( ruleEString ) )
                    	    {
                    	    otherlv_15=(Token)match(input,14,FOLLOW_3); 

                    	    					newLeafNode(otherlv_15, grammarAccess.getPostReciveRPortAccess().getCommaKeyword_6_3_0());
                    	    				
                    	    // InternalAutoSAR.g:891:5: ( ( ruleEString ) )
                    	    // InternalAutoSAR.g:892:6: ( ruleEString )
                    	    {
                    	    // InternalAutoSAR.g:892:6: ( ruleEString )
                    	    // InternalAutoSAR.g:893:7: ruleEString
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getPostReciveRPortRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getPostReciveRPortAccess().getReciveFromPostRecivePPortCrossReference_6_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_17);
                    	    ruleEString();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop20;
                        }
                    } while (true);

                    otherlv_17=(Token)match(input,23,FOLLOW_8); 

                    				newLeafNode(otherlv_17, grammarAccess.getPostReciveRPortAccess().getRightParenthesisKeyword_6_4());
                    			

                    }
                    break;

            }

            otherlv_18=(Token)match(input,15,FOLLOW_2); 

            			newLeafNode(otherlv_18, grammarAccess.getPostReciveRPortAccess().getRightCurlyBracketKeyword_7());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePostReciveRPort"


    // $ANTLR start "entryRulePostRecivePPort"
    // InternalAutoSAR.g:921:1: entryRulePostRecivePPort returns [EObject current=null] : iv_rulePostRecivePPort= rulePostRecivePPort EOF ;
    public final EObject entryRulePostRecivePPort() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePostRecivePPort = null;


        try {
            // InternalAutoSAR.g:921:56: (iv_rulePostRecivePPort= rulePostRecivePPort EOF )
            // InternalAutoSAR.g:922:2: iv_rulePostRecivePPort= rulePostRecivePPort EOF
            {
             newCompositeNode(grammarAccess.getPostRecivePPortRule()); 
            pushFollow(FOLLOW_1);
            iv_rulePostRecivePPort=rulePostRecivePPort();

            state._fsp--;

             current =iv_rulePostRecivePPort; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePostRecivePPort"


    // $ANTLR start "rulePostRecivePPort"
    // InternalAutoSAR.g:928:1: rulePostRecivePPort returns [EObject current=null] : ( () otherlv_1= 'PostRecivePPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'postTo' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' ) ;
    public final EObject rulePostRecivePPort() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_17=null;
        Token otherlv_18=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        AntlrDatatypeRuleToken lv_data_5_0 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:934:2: ( ( () otherlv_1= 'PostRecivePPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'postTo' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' ) )
            // InternalAutoSAR.g:935:2: ( () otherlv_1= 'PostRecivePPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'postTo' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' )
            {
            // InternalAutoSAR.g:935:2: ( () otherlv_1= 'PostRecivePPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'postTo' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' )
            // InternalAutoSAR.g:936:3: () otherlv_1= 'PostRecivePPort' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'postTo' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}'
            {
            // InternalAutoSAR.g:936:3: ()
            // InternalAutoSAR.g:937:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getPostRecivePPortAccess().getPostRecivePPortAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,29,FOLLOW_3); 

            			newLeafNode(otherlv_1, grammarAccess.getPostRecivePPortAccess().getPostRecivePPortKeyword_1());
            		
            // InternalAutoSAR.g:947:3: ( (lv_name_2_0= ruleEString ) )
            // InternalAutoSAR.g:948:4: (lv_name_2_0= ruleEString )
            {
            // InternalAutoSAR.g:948:4: (lv_name_2_0= ruleEString )
            // InternalAutoSAR.g:949:5: lv_name_2_0= ruleEString
            {

            					newCompositeNode(grammarAccess.getPostRecivePPortAccess().getNameEStringParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_4);
            lv_name_2_0=ruleEString();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getPostRecivePPortRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.xtext.example.autosar.AutoSAR.EString");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_19); 

            			newLeafNode(otherlv_3, grammarAccess.getPostRecivePPortAccess().getLeftCurlyBracketKeyword_3());
            		
            // InternalAutoSAR.g:970:3: (otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) ) )?
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==20) ) {
                alt22=1;
            }
            switch (alt22) {
                case 1 :
                    // InternalAutoSAR.g:971:4: otherlv_4= 'data' ( (lv_data_5_0= ruleEJavaClass ) )
                    {
                    otherlv_4=(Token)match(input,20,FOLLOW_14); 

                    				newLeafNode(otherlv_4, grammarAccess.getPostRecivePPortAccess().getDataKeyword_4_0());
                    			
                    // InternalAutoSAR.g:975:4: ( (lv_data_5_0= ruleEJavaClass ) )
                    // InternalAutoSAR.g:976:5: (lv_data_5_0= ruleEJavaClass )
                    {
                    // InternalAutoSAR.g:976:5: (lv_data_5_0= ruleEJavaClass )
                    // InternalAutoSAR.g:977:6: lv_data_5_0= ruleEJavaClass
                    {

                    						newCompositeNode(grammarAccess.getPostRecivePPortAccess().getDataEJavaClassParserRuleCall_4_1_0());
                    					
                    pushFollow(FOLLOW_20);
                    lv_data_5_0=ruleEJavaClass();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getPostRecivePPortRule());
                    						}
                    						set(
                    							current,
                    							"data",
                    							lv_data_5_0,
                    							"org.xtext.example.autosar.AutoSAR.EJavaClass");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalAutoSAR.g:995:3: (otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==26) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // InternalAutoSAR.g:996:4: otherlv_6= 'DataFrom' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')'
                    {
                    otherlv_6=(Token)match(input,26,FOLLOW_16); 

                    				newLeafNode(otherlv_6, grammarAccess.getPostRecivePPortAccess().getDataFromKeyword_5_0());
                    			
                    otherlv_7=(Token)match(input,22,FOLLOW_3); 

                    				newLeafNode(otherlv_7, grammarAccess.getPostRecivePPortAccess().getLeftParenthesisKeyword_5_1());
                    			
                    // InternalAutoSAR.g:1004:4: ( ( ruleEString ) )
                    // InternalAutoSAR.g:1005:5: ( ruleEString )
                    {
                    // InternalAutoSAR.g:1005:5: ( ruleEString )
                    // InternalAutoSAR.g:1006:6: ruleEString
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPostRecivePPortRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getPostRecivePPortAccess().getDataFromEntityCrossReference_5_2_0());
                    					
                    pushFollow(FOLLOW_17);
                    ruleEString();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1020:4: (otherlv_9= ',' ( ( ruleEString ) ) )*
                    loop23:
                    do {
                        int alt23=2;
                        int LA23_0 = input.LA(1);

                        if ( (LA23_0==14) ) {
                            alt23=1;
                        }


                        switch (alt23) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1021:5: otherlv_9= ',' ( ( ruleEString ) )
                    	    {
                    	    otherlv_9=(Token)match(input,14,FOLLOW_3); 

                    	    					newLeafNode(otherlv_9, grammarAccess.getPostRecivePPortAccess().getCommaKeyword_5_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1025:5: ( ( ruleEString ) )
                    	    // InternalAutoSAR.g:1026:6: ( ruleEString )
                    	    {
                    	    // InternalAutoSAR.g:1026:6: ( ruleEString )
                    	    // InternalAutoSAR.g:1027:7: ruleEString
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getPostRecivePPortRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getPostRecivePPortAccess().getDataFromEntityCrossReference_5_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_17);
                    	    ruleEString();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop23;
                        }
                    } while (true);

                    otherlv_11=(Token)match(input,23,FOLLOW_21); 

                    				newLeafNode(otherlv_11, grammarAccess.getPostRecivePPortAccess().getRightParenthesisKeyword_5_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:1047:3: (otherlv_12= 'postTo' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==27) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // InternalAutoSAR.g:1048:4: otherlv_12= 'postTo' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')'
                    {
                    otherlv_12=(Token)match(input,27,FOLLOW_16); 

                    				newLeafNode(otherlv_12, grammarAccess.getPostRecivePPortAccess().getPostToKeyword_6_0());
                    			
                    otherlv_13=(Token)match(input,22,FOLLOW_3); 

                    				newLeafNode(otherlv_13, grammarAccess.getPostRecivePPortAccess().getLeftParenthesisKeyword_6_1());
                    			
                    // InternalAutoSAR.g:1056:4: ( ( ruleEString ) )
                    // InternalAutoSAR.g:1057:5: ( ruleEString )
                    {
                    // InternalAutoSAR.g:1057:5: ( ruleEString )
                    // InternalAutoSAR.g:1058:6: ruleEString
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPostRecivePPortRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getPostRecivePPortAccess().getPostToPostReciveRPortCrossReference_6_2_0());
                    					
                    pushFollow(FOLLOW_17);
                    ruleEString();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1072:4: (otherlv_15= ',' ( ( ruleEString ) ) )*
                    loop25:
                    do {
                        int alt25=2;
                        int LA25_0 = input.LA(1);

                        if ( (LA25_0==14) ) {
                            alt25=1;
                        }


                        switch (alt25) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1073:5: otherlv_15= ',' ( ( ruleEString ) )
                    	    {
                    	    otherlv_15=(Token)match(input,14,FOLLOW_3); 

                    	    					newLeafNode(otherlv_15, grammarAccess.getPostRecivePPortAccess().getCommaKeyword_6_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1077:5: ( ( ruleEString ) )
                    	    // InternalAutoSAR.g:1078:6: ( ruleEString )
                    	    {
                    	    // InternalAutoSAR.g:1078:6: ( ruleEString )
                    	    // InternalAutoSAR.g:1079:7: ruleEString
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getPostRecivePPortRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getPostRecivePPortAccess().getPostToPostReciveRPortCrossReference_6_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_17);
                    	    ruleEString();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop25;
                        }
                    } while (true);

                    otherlv_17=(Token)match(input,23,FOLLOW_8); 

                    				newLeafNode(otherlv_17, grammarAccess.getPostRecivePPortAccess().getRightParenthesisKeyword_6_4());
                    			

                    }
                    break;

            }

            otherlv_18=(Token)match(input,15,FOLLOW_2); 

            			newLeafNode(otherlv_18, grammarAccess.getPostRecivePPortAccess().getRightCurlyBracketKeyword_7());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePostRecivePPort"


    // $ANTLR start "entryRuleApplicationSWC"
    // InternalAutoSAR.g:1107:1: entryRuleApplicationSWC returns [EObject current=null] : iv_ruleApplicationSWC= ruleApplicationSWC EOF ;
    public final EObject entryRuleApplicationSWC() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleApplicationSWC = null;


        try {
            // InternalAutoSAR.g:1107:55: (iv_ruleApplicationSWC= ruleApplicationSWC EOF )
            // InternalAutoSAR.g:1108:2: iv_ruleApplicationSWC= ruleApplicationSWC EOF
            {
             newCompositeNode(grammarAccess.getApplicationSWCRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleApplicationSWC=ruleApplicationSWC();

            state._fsp--;

             current =iv_ruleApplicationSWC; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleApplicationSWC"


    // $ANTLR start "ruleApplicationSWC"
    // InternalAutoSAR.g:1114:1: ruleApplicationSWC returns [EObject current=null] : ( () otherlv_1= 'ApplicationSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )? (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )? (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )? (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )? (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )? otherlv_34= '}' ) ;
    public final EObject ruleApplicationSWC() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        Token otherlv_22=null;
        Token otherlv_23=null;
        Token otherlv_25=null;
        Token otherlv_27=null;
        Token otherlv_28=null;
        Token otherlv_29=null;
        Token otherlv_31=null;
        Token otherlv_33=null;
        Token otherlv_34=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_ib_6_0 = null;

        EObject lv_ib_8_0 = null;

        EObject lv_clientservicerport_12_0 = null;

        EObject lv_clientservicerport_14_0 = null;

        EObject lv_clientservicepport_18_0 = null;

        EObject lv_clientservicepport_20_0 = null;

        EObject lv_postreciverport_24_0 = null;

        EObject lv_postreciverport_26_0 = null;

        EObject lv_postrecivepport_30_0 = null;

        EObject lv_postrecivepport_32_0 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:1120:2: ( ( () otherlv_1= 'ApplicationSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )? (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )? (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )? (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )? (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )? otherlv_34= '}' ) )
            // InternalAutoSAR.g:1121:2: ( () otherlv_1= 'ApplicationSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )? (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )? (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )? (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )? (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )? otherlv_34= '}' )
            {
            // InternalAutoSAR.g:1121:2: ( () otherlv_1= 'ApplicationSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )? (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )? (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )? (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )? (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )? otherlv_34= '}' )
            // InternalAutoSAR.g:1122:3: () otherlv_1= 'ApplicationSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )? (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )? (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )? (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )? (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )? otherlv_34= '}'
            {
            // InternalAutoSAR.g:1122:3: ()
            // InternalAutoSAR.g:1123:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getApplicationSWCAccess().getApplicationSWCAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,30,FOLLOW_3); 

            			newLeafNode(otherlv_1, grammarAccess.getApplicationSWCAccess().getApplicationSWCKeyword_1());
            		
            // InternalAutoSAR.g:1133:3: ( (lv_name_2_0= ruleEString ) )
            // InternalAutoSAR.g:1134:4: (lv_name_2_0= ruleEString )
            {
            // InternalAutoSAR.g:1134:4: (lv_name_2_0= ruleEString )
            // InternalAutoSAR.g:1135:5: lv_name_2_0= ruleEString
            {

            					newCompositeNode(grammarAccess.getApplicationSWCAccess().getNameEStringParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_4);
            lv_name_2_0=ruleEString();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.xtext.example.autosar.AutoSAR.EString");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_22); 

            			newLeafNode(otherlv_3, grammarAccess.getApplicationSWCAccess().getLeftCurlyBracketKeyword_3());
            		
            // InternalAutoSAR.g:1156:3: (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==31) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // InternalAutoSAR.g:1157:4: otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}'
                    {
                    otherlv_4=(Token)match(input,31,FOLLOW_4); 

                    				newLeafNode(otherlv_4, grammarAccess.getApplicationSWCAccess().getIbKeyword_4_0());
                    			
                    otherlv_5=(Token)match(input,12,FOLLOW_23); 

                    				newLeafNode(otherlv_5, grammarAccess.getApplicationSWCAccess().getLeftCurlyBracketKeyword_4_1());
                    			
                    // InternalAutoSAR.g:1165:4: ( (lv_ib_6_0= ruleIB ) )
                    // InternalAutoSAR.g:1166:5: (lv_ib_6_0= ruleIB )
                    {
                    // InternalAutoSAR.g:1166:5: (lv_ib_6_0= ruleIB )
                    // InternalAutoSAR.g:1167:6: lv_ib_6_0= ruleIB
                    {

                    						newCompositeNode(grammarAccess.getApplicationSWCAccess().getIbIBParserRuleCall_4_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_ib_6_0=ruleIB();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
                    						}
                    						add(
                    							current,
                    							"ib",
                    							lv_ib_6_0,
                    							"org.xtext.example.autosar.AutoSAR.IB");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1184:4: (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )*
                    loop27:
                    do {
                        int alt27=2;
                        int LA27_0 = input.LA(1);

                        if ( (LA27_0==14) ) {
                            alt27=1;
                        }


                        switch (alt27) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1185:5: otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) )
                    	    {
                    	    otherlv_7=(Token)match(input,14,FOLLOW_23); 

                    	    					newLeafNode(otherlv_7, grammarAccess.getApplicationSWCAccess().getCommaKeyword_4_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1189:5: ( (lv_ib_8_0= ruleIB ) )
                    	    // InternalAutoSAR.g:1190:6: (lv_ib_8_0= ruleIB )
                    	    {
                    	    // InternalAutoSAR.g:1190:6: (lv_ib_8_0= ruleIB )
                    	    // InternalAutoSAR.g:1191:7: lv_ib_8_0= ruleIB
                    	    {

                    	    							newCompositeNode(grammarAccess.getApplicationSWCAccess().getIbIBParserRuleCall_4_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_ib_8_0=ruleIB();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"ib",
                    	    								lv_ib_8_0,
                    	    								"org.xtext.example.autosar.AutoSAR.IB");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop27;
                        }
                    } while (true);

                    otherlv_9=(Token)match(input,15,FOLLOW_24); 

                    				newLeafNode(otherlv_9, grammarAccess.getApplicationSWCAccess().getRightCurlyBracketKeyword_4_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:1214:3: (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )?
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==32) ) {
                alt30=1;
            }
            switch (alt30) {
                case 1 :
                    // InternalAutoSAR.g:1215:4: otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}'
                    {
                    otherlv_10=(Token)match(input,32,FOLLOW_4); 

                    				newLeafNode(otherlv_10, grammarAccess.getApplicationSWCAccess().getClientservicerportKeyword_5_0());
                    			
                    otherlv_11=(Token)match(input,12,FOLLOW_25); 

                    				newLeafNode(otherlv_11, grammarAccess.getApplicationSWCAccess().getLeftCurlyBracketKeyword_5_1());
                    			
                    // InternalAutoSAR.g:1223:4: ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) )
                    // InternalAutoSAR.g:1224:5: (lv_clientservicerport_12_0= ruleClientServiceRPort )
                    {
                    // InternalAutoSAR.g:1224:5: (lv_clientservicerport_12_0= ruleClientServiceRPort )
                    // InternalAutoSAR.g:1225:6: lv_clientservicerport_12_0= ruleClientServiceRPort
                    {

                    						newCompositeNode(grammarAccess.getApplicationSWCAccess().getClientservicerportClientServiceRPortParserRuleCall_5_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_clientservicerport_12_0=ruleClientServiceRPort();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
                    						}
                    						add(
                    							current,
                    							"clientservicerport",
                    							lv_clientservicerport_12_0,
                    							"org.xtext.example.autosar.AutoSAR.ClientServiceRPort");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1242:4: (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )*
                    loop29:
                    do {
                        int alt29=2;
                        int LA29_0 = input.LA(1);

                        if ( (LA29_0==14) ) {
                            alt29=1;
                        }


                        switch (alt29) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1243:5: otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) )
                    	    {
                    	    otherlv_13=(Token)match(input,14,FOLLOW_25); 

                    	    					newLeafNode(otherlv_13, grammarAccess.getApplicationSWCAccess().getCommaKeyword_5_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1247:5: ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) )
                    	    // InternalAutoSAR.g:1248:6: (lv_clientservicerport_14_0= ruleClientServiceRPort )
                    	    {
                    	    // InternalAutoSAR.g:1248:6: (lv_clientservicerport_14_0= ruleClientServiceRPort )
                    	    // InternalAutoSAR.g:1249:7: lv_clientservicerport_14_0= ruleClientServiceRPort
                    	    {

                    	    							newCompositeNode(grammarAccess.getApplicationSWCAccess().getClientservicerportClientServiceRPortParserRuleCall_5_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_clientservicerport_14_0=ruleClientServiceRPort();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"clientservicerport",
                    	    								lv_clientservicerport_14_0,
                    	    								"org.xtext.example.autosar.AutoSAR.ClientServiceRPort");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop29;
                        }
                    } while (true);

                    otherlv_15=(Token)match(input,15,FOLLOW_26); 

                    				newLeafNode(otherlv_15, grammarAccess.getApplicationSWCAccess().getRightCurlyBracketKeyword_5_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:1272:3: (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )?
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==33) ) {
                alt32=1;
            }
            switch (alt32) {
                case 1 :
                    // InternalAutoSAR.g:1273:4: otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}'
                    {
                    otherlv_16=(Token)match(input,33,FOLLOW_4); 

                    				newLeafNode(otherlv_16, grammarAccess.getApplicationSWCAccess().getClientservicepportKeyword_6_0());
                    			
                    otherlv_17=(Token)match(input,12,FOLLOW_27); 

                    				newLeafNode(otherlv_17, grammarAccess.getApplicationSWCAccess().getLeftCurlyBracketKeyword_6_1());
                    			
                    // InternalAutoSAR.g:1281:4: ( (lv_clientservicepport_18_0= ruleClientServicePPort ) )
                    // InternalAutoSAR.g:1282:5: (lv_clientservicepport_18_0= ruleClientServicePPort )
                    {
                    // InternalAutoSAR.g:1282:5: (lv_clientservicepport_18_0= ruleClientServicePPort )
                    // InternalAutoSAR.g:1283:6: lv_clientservicepport_18_0= ruleClientServicePPort
                    {

                    						newCompositeNode(grammarAccess.getApplicationSWCAccess().getClientservicepportClientServicePPortParserRuleCall_6_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_clientservicepport_18_0=ruleClientServicePPort();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
                    						}
                    						add(
                    							current,
                    							"clientservicepport",
                    							lv_clientservicepport_18_0,
                    							"org.xtext.example.autosar.AutoSAR.ClientServicePPort");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1300:4: (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )*
                    loop31:
                    do {
                        int alt31=2;
                        int LA31_0 = input.LA(1);

                        if ( (LA31_0==14) ) {
                            alt31=1;
                        }


                        switch (alt31) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1301:5: otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) )
                    	    {
                    	    otherlv_19=(Token)match(input,14,FOLLOW_27); 

                    	    					newLeafNode(otherlv_19, grammarAccess.getApplicationSWCAccess().getCommaKeyword_6_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1305:5: ( (lv_clientservicepport_20_0= ruleClientServicePPort ) )
                    	    // InternalAutoSAR.g:1306:6: (lv_clientservicepport_20_0= ruleClientServicePPort )
                    	    {
                    	    // InternalAutoSAR.g:1306:6: (lv_clientservicepport_20_0= ruleClientServicePPort )
                    	    // InternalAutoSAR.g:1307:7: lv_clientservicepport_20_0= ruleClientServicePPort
                    	    {

                    	    							newCompositeNode(grammarAccess.getApplicationSWCAccess().getClientservicepportClientServicePPortParserRuleCall_6_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_clientservicepport_20_0=ruleClientServicePPort();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"clientservicepport",
                    	    								lv_clientservicepport_20_0,
                    	    								"org.xtext.example.autosar.AutoSAR.ClientServicePPort");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop31;
                        }
                    } while (true);

                    otherlv_21=(Token)match(input,15,FOLLOW_28); 

                    				newLeafNode(otherlv_21, grammarAccess.getApplicationSWCAccess().getRightCurlyBracketKeyword_6_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:1330:3: (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )?
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==34) ) {
                alt34=1;
            }
            switch (alt34) {
                case 1 :
                    // InternalAutoSAR.g:1331:4: otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}'
                    {
                    otherlv_22=(Token)match(input,34,FOLLOW_4); 

                    				newLeafNode(otherlv_22, grammarAccess.getApplicationSWCAccess().getPostreciverportKeyword_7_0());
                    			
                    otherlv_23=(Token)match(input,12,FOLLOW_29); 

                    				newLeafNode(otherlv_23, grammarAccess.getApplicationSWCAccess().getLeftCurlyBracketKeyword_7_1());
                    			
                    // InternalAutoSAR.g:1339:4: ( (lv_postreciverport_24_0= rulePostReciveRPort ) )
                    // InternalAutoSAR.g:1340:5: (lv_postreciverport_24_0= rulePostReciveRPort )
                    {
                    // InternalAutoSAR.g:1340:5: (lv_postreciverport_24_0= rulePostReciveRPort )
                    // InternalAutoSAR.g:1341:6: lv_postreciverport_24_0= rulePostReciveRPort
                    {

                    						newCompositeNode(grammarAccess.getApplicationSWCAccess().getPostreciverportPostReciveRPortParserRuleCall_7_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_postreciverport_24_0=rulePostReciveRPort();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
                    						}
                    						add(
                    							current,
                    							"postreciverport",
                    							lv_postreciverport_24_0,
                    							"org.xtext.example.autosar.AutoSAR.PostReciveRPort");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1358:4: (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )*
                    loop33:
                    do {
                        int alt33=2;
                        int LA33_0 = input.LA(1);

                        if ( (LA33_0==14) ) {
                            alt33=1;
                        }


                        switch (alt33) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1359:5: otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) )
                    	    {
                    	    otherlv_25=(Token)match(input,14,FOLLOW_29); 

                    	    					newLeafNode(otherlv_25, grammarAccess.getApplicationSWCAccess().getCommaKeyword_7_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1363:5: ( (lv_postreciverport_26_0= rulePostReciveRPort ) )
                    	    // InternalAutoSAR.g:1364:6: (lv_postreciverport_26_0= rulePostReciveRPort )
                    	    {
                    	    // InternalAutoSAR.g:1364:6: (lv_postreciverport_26_0= rulePostReciveRPort )
                    	    // InternalAutoSAR.g:1365:7: lv_postreciverport_26_0= rulePostReciveRPort
                    	    {

                    	    							newCompositeNode(grammarAccess.getApplicationSWCAccess().getPostreciverportPostReciveRPortParserRuleCall_7_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_postreciverport_26_0=rulePostReciveRPort();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"postreciverport",
                    	    								lv_postreciverport_26_0,
                    	    								"org.xtext.example.autosar.AutoSAR.PostReciveRPort");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop33;
                        }
                    } while (true);

                    otherlv_27=(Token)match(input,15,FOLLOW_30); 

                    				newLeafNode(otherlv_27, grammarAccess.getApplicationSWCAccess().getRightCurlyBracketKeyword_7_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:1388:3: (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )?
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==35) ) {
                alt36=1;
            }
            switch (alt36) {
                case 1 :
                    // InternalAutoSAR.g:1389:4: otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}'
                    {
                    otherlv_28=(Token)match(input,35,FOLLOW_4); 

                    				newLeafNode(otherlv_28, grammarAccess.getApplicationSWCAccess().getPostrecivepportKeyword_8_0());
                    			
                    otherlv_29=(Token)match(input,12,FOLLOW_31); 

                    				newLeafNode(otherlv_29, grammarAccess.getApplicationSWCAccess().getLeftCurlyBracketKeyword_8_1());
                    			
                    // InternalAutoSAR.g:1397:4: ( (lv_postrecivepport_30_0= rulePostRecivePPort ) )
                    // InternalAutoSAR.g:1398:5: (lv_postrecivepport_30_0= rulePostRecivePPort )
                    {
                    // InternalAutoSAR.g:1398:5: (lv_postrecivepport_30_0= rulePostRecivePPort )
                    // InternalAutoSAR.g:1399:6: lv_postrecivepport_30_0= rulePostRecivePPort
                    {

                    						newCompositeNode(grammarAccess.getApplicationSWCAccess().getPostrecivepportPostRecivePPortParserRuleCall_8_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_postrecivepport_30_0=rulePostRecivePPort();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
                    						}
                    						add(
                    							current,
                    							"postrecivepport",
                    							lv_postrecivepport_30_0,
                    							"org.xtext.example.autosar.AutoSAR.PostRecivePPort");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1416:4: (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )*
                    loop35:
                    do {
                        int alt35=2;
                        int LA35_0 = input.LA(1);

                        if ( (LA35_0==14) ) {
                            alt35=1;
                        }


                        switch (alt35) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1417:5: otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) )
                    	    {
                    	    otherlv_31=(Token)match(input,14,FOLLOW_31); 

                    	    					newLeafNode(otherlv_31, grammarAccess.getApplicationSWCAccess().getCommaKeyword_8_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1421:5: ( (lv_postrecivepport_32_0= rulePostRecivePPort ) )
                    	    // InternalAutoSAR.g:1422:6: (lv_postrecivepport_32_0= rulePostRecivePPort )
                    	    {
                    	    // InternalAutoSAR.g:1422:6: (lv_postrecivepport_32_0= rulePostRecivePPort )
                    	    // InternalAutoSAR.g:1423:7: lv_postrecivepport_32_0= rulePostRecivePPort
                    	    {

                    	    							newCompositeNode(grammarAccess.getApplicationSWCAccess().getPostrecivepportPostRecivePPortParserRuleCall_8_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_postrecivepport_32_0=rulePostRecivePPort();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getApplicationSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"postrecivepport",
                    	    								lv_postrecivepport_32_0,
                    	    								"org.xtext.example.autosar.AutoSAR.PostRecivePPort");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop35;
                        }
                    } while (true);

                    otherlv_33=(Token)match(input,15,FOLLOW_8); 

                    				newLeafNode(otherlv_33, grammarAccess.getApplicationSWCAccess().getRightCurlyBracketKeyword_8_4());
                    			

                    }
                    break;

            }

            otherlv_34=(Token)match(input,15,FOLLOW_2); 

            			newLeafNode(otherlv_34, grammarAccess.getApplicationSWCAccess().getRightCurlyBracketKeyword_9());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleApplicationSWC"


    // $ANTLR start "entryRuleComplexDeviceDriverSWC"
    // InternalAutoSAR.g:1454:1: entryRuleComplexDeviceDriverSWC returns [EObject current=null] : iv_ruleComplexDeviceDriverSWC= ruleComplexDeviceDriverSWC EOF ;
    public final EObject entryRuleComplexDeviceDriverSWC() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComplexDeviceDriverSWC = null;


        try {
            // InternalAutoSAR.g:1454:63: (iv_ruleComplexDeviceDriverSWC= ruleComplexDeviceDriverSWC EOF )
            // InternalAutoSAR.g:1455:2: iv_ruleComplexDeviceDriverSWC= ruleComplexDeviceDriverSWC EOF
            {
             newCompositeNode(grammarAccess.getComplexDeviceDriverSWCRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleComplexDeviceDriverSWC=ruleComplexDeviceDriverSWC();

            state._fsp--;

             current =iv_ruleComplexDeviceDriverSWC; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComplexDeviceDriverSWC"


    // $ANTLR start "ruleComplexDeviceDriverSWC"
    // InternalAutoSAR.g:1461:1: ruleComplexDeviceDriverSWC returns [EObject current=null] : ( () otherlv_1= 'ComplexDeviceDriverSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )? (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )? (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )? (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )? (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )? otherlv_34= '}' ) ;
    public final EObject ruleComplexDeviceDriverSWC() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        Token otherlv_22=null;
        Token otherlv_23=null;
        Token otherlv_25=null;
        Token otherlv_27=null;
        Token otherlv_28=null;
        Token otherlv_29=null;
        Token otherlv_31=null;
        Token otherlv_33=null;
        Token otherlv_34=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_ib_6_0 = null;

        EObject lv_ib_8_0 = null;

        EObject lv_clientservicerport_12_0 = null;

        EObject lv_clientservicerport_14_0 = null;

        EObject lv_clientservicepport_18_0 = null;

        EObject lv_clientservicepport_20_0 = null;

        EObject lv_postreciverport_24_0 = null;

        EObject lv_postreciverport_26_0 = null;

        EObject lv_postrecivepport_30_0 = null;

        EObject lv_postrecivepport_32_0 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:1467:2: ( ( () otherlv_1= 'ComplexDeviceDriverSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )? (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )? (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )? (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )? (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )? otherlv_34= '}' ) )
            // InternalAutoSAR.g:1468:2: ( () otherlv_1= 'ComplexDeviceDriverSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )? (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )? (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )? (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )? (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )? otherlv_34= '}' )
            {
            // InternalAutoSAR.g:1468:2: ( () otherlv_1= 'ComplexDeviceDriverSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )? (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )? (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )? (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )? (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )? otherlv_34= '}' )
            // InternalAutoSAR.g:1469:3: () otherlv_1= 'ComplexDeviceDriverSWC' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )? (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )? (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )? (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )? (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )? otherlv_34= '}'
            {
            // InternalAutoSAR.g:1469:3: ()
            // InternalAutoSAR.g:1470:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getComplexDeviceDriverSWCAccess().getComplexDeviceDriverSWCAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,36,FOLLOW_3); 

            			newLeafNode(otherlv_1, grammarAccess.getComplexDeviceDriverSWCAccess().getComplexDeviceDriverSWCKeyword_1());
            		
            // InternalAutoSAR.g:1480:3: ( (lv_name_2_0= ruleEString ) )
            // InternalAutoSAR.g:1481:4: (lv_name_2_0= ruleEString )
            {
            // InternalAutoSAR.g:1481:4: (lv_name_2_0= ruleEString )
            // InternalAutoSAR.g:1482:5: lv_name_2_0= ruleEString
            {

            					newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getNameEStringParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_4);
            lv_name_2_0=ruleEString();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.xtext.example.autosar.AutoSAR.EString");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_22); 

            			newLeafNode(otherlv_3, grammarAccess.getComplexDeviceDriverSWCAccess().getLeftCurlyBracketKeyword_3());
            		
            // InternalAutoSAR.g:1503:3: (otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}' )?
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( (LA38_0==31) ) {
                alt38=1;
            }
            switch (alt38) {
                case 1 :
                    // InternalAutoSAR.g:1504:4: otherlv_4= 'ib' otherlv_5= '{' ( (lv_ib_6_0= ruleIB ) ) (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )* otherlv_9= '}'
                    {
                    otherlv_4=(Token)match(input,31,FOLLOW_4); 

                    				newLeafNode(otherlv_4, grammarAccess.getComplexDeviceDriverSWCAccess().getIbKeyword_4_0());
                    			
                    otherlv_5=(Token)match(input,12,FOLLOW_23); 

                    				newLeafNode(otherlv_5, grammarAccess.getComplexDeviceDriverSWCAccess().getLeftCurlyBracketKeyword_4_1());
                    			
                    // InternalAutoSAR.g:1512:4: ( (lv_ib_6_0= ruleIB ) )
                    // InternalAutoSAR.g:1513:5: (lv_ib_6_0= ruleIB )
                    {
                    // InternalAutoSAR.g:1513:5: (lv_ib_6_0= ruleIB )
                    // InternalAutoSAR.g:1514:6: lv_ib_6_0= ruleIB
                    {

                    						newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getIbIBParserRuleCall_4_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_ib_6_0=ruleIB();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
                    						}
                    						add(
                    							current,
                    							"ib",
                    							lv_ib_6_0,
                    							"org.xtext.example.autosar.AutoSAR.IB");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1531:4: (otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) ) )*
                    loop37:
                    do {
                        int alt37=2;
                        int LA37_0 = input.LA(1);

                        if ( (LA37_0==14) ) {
                            alt37=1;
                        }


                        switch (alt37) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1532:5: otherlv_7= ',' ( (lv_ib_8_0= ruleIB ) )
                    	    {
                    	    otherlv_7=(Token)match(input,14,FOLLOW_23); 

                    	    					newLeafNode(otherlv_7, grammarAccess.getComplexDeviceDriverSWCAccess().getCommaKeyword_4_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1536:5: ( (lv_ib_8_0= ruleIB ) )
                    	    // InternalAutoSAR.g:1537:6: (lv_ib_8_0= ruleIB )
                    	    {
                    	    // InternalAutoSAR.g:1537:6: (lv_ib_8_0= ruleIB )
                    	    // InternalAutoSAR.g:1538:7: lv_ib_8_0= ruleIB
                    	    {

                    	    							newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getIbIBParserRuleCall_4_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_ib_8_0=ruleIB();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"ib",
                    	    								lv_ib_8_0,
                    	    								"org.xtext.example.autosar.AutoSAR.IB");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop37;
                        }
                    } while (true);

                    otherlv_9=(Token)match(input,15,FOLLOW_24); 

                    				newLeafNode(otherlv_9, grammarAccess.getComplexDeviceDriverSWCAccess().getRightCurlyBracketKeyword_4_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:1561:3: (otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}' )?
            int alt40=2;
            int LA40_0 = input.LA(1);

            if ( (LA40_0==32) ) {
                alt40=1;
            }
            switch (alt40) {
                case 1 :
                    // InternalAutoSAR.g:1562:4: otherlv_10= 'clientservicerport' otherlv_11= '{' ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) ) (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )* otherlv_15= '}'
                    {
                    otherlv_10=(Token)match(input,32,FOLLOW_4); 

                    				newLeafNode(otherlv_10, grammarAccess.getComplexDeviceDriverSWCAccess().getClientservicerportKeyword_5_0());
                    			
                    otherlv_11=(Token)match(input,12,FOLLOW_25); 

                    				newLeafNode(otherlv_11, grammarAccess.getComplexDeviceDriverSWCAccess().getLeftCurlyBracketKeyword_5_1());
                    			
                    // InternalAutoSAR.g:1570:4: ( (lv_clientservicerport_12_0= ruleClientServiceRPort ) )
                    // InternalAutoSAR.g:1571:5: (lv_clientservicerport_12_0= ruleClientServiceRPort )
                    {
                    // InternalAutoSAR.g:1571:5: (lv_clientservicerport_12_0= ruleClientServiceRPort )
                    // InternalAutoSAR.g:1572:6: lv_clientservicerport_12_0= ruleClientServiceRPort
                    {

                    						newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getClientservicerportClientServiceRPortParserRuleCall_5_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_clientservicerport_12_0=ruleClientServiceRPort();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
                    						}
                    						add(
                    							current,
                    							"clientservicerport",
                    							lv_clientservicerport_12_0,
                    							"org.xtext.example.autosar.AutoSAR.ClientServiceRPort");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1589:4: (otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) ) )*
                    loop39:
                    do {
                        int alt39=2;
                        int LA39_0 = input.LA(1);

                        if ( (LA39_0==14) ) {
                            alt39=1;
                        }


                        switch (alt39) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1590:5: otherlv_13= ',' ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) )
                    	    {
                    	    otherlv_13=(Token)match(input,14,FOLLOW_25); 

                    	    					newLeafNode(otherlv_13, grammarAccess.getComplexDeviceDriverSWCAccess().getCommaKeyword_5_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1594:5: ( (lv_clientservicerport_14_0= ruleClientServiceRPort ) )
                    	    // InternalAutoSAR.g:1595:6: (lv_clientservicerport_14_0= ruleClientServiceRPort )
                    	    {
                    	    // InternalAutoSAR.g:1595:6: (lv_clientservicerport_14_0= ruleClientServiceRPort )
                    	    // InternalAutoSAR.g:1596:7: lv_clientservicerport_14_0= ruleClientServiceRPort
                    	    {

                    	    							newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getClientservicerportClientServiceRPortParserRuleCall_5_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_clientservicerport_14_0=ruleClientServiceRPort();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"clientservicerport",
                    	    								lv_clientservicerport_14_0,
                    	    								"org.xtext.example.autosar.AutoSAR.ClientServiceRPort");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop39;
                        }
                    } while (true);

                    otherlv_15=(Token)match(input,15,FOLLOW_26); 

                    				newLeafNode(otherlv_15, grammarAccess.getComplexDeviceDriverSWCAccess().getRightCurlyBracketKeyword_5_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:1619:3: (otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}' )?
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==33) ) {
                alt42=1;
            }
            switch (alt42) {
                case 1 :
                    // InternalAutoSAR.g:1620:4: otherlv_16= 'clientservicepport' otherlv_17= '{' ( (lv_clientservicepport_18_0= ruleClientServicePPort ) ) (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )* otherlv_21= '}'
                    {
                    otherlv_16=(Token)match(input,33,FOLLOW_4); 

                    				newLeafNode(otherlv_16, grammarAccess.getComplexDeviceDriverSWCAccess().getClientservicepportKeyword_6_0());
                    			
                    otherlv_17=(Token)match(input,12,FOLLOW_27); 

                    				newLeafNode(otherlv_17, grammarAccess.getComplexDeviceDriverSWCAccess().getLeftCurlyBracketKeyword_6_1());
                    			
                    // InternalAutoSAR.g:1628:4: ( (lv_clientservicepport_18_0= ruleClientServicePPort ) )
                    // InternalAutoSAR.g:1629:5: (lv_clientservicepport_18_0= ruleClientServicePPort )
                    {
                    // InternalAutoSAR.g:1629:5: (lv_clientservicepport_18_0= ruleClientServicePPort )
                    // InternalAutoSAR.g:1630:6: lv_clientservicepport_18_0= ruleClientServicePPort
                    {

                    						newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getClientservicepportClientServicePPortParserRuleCall_6_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_clientservicepport_18_0=ruleClientServicePPort();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
                    						}
                    						add(
                    							current,
                    							"clientservicepport",
                    							lv_clientservicepport_18_0,
                    							"org.xtext.example.autosar.AutoSAR.ClientServicePPort");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1647:4: (otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) ) )*
                    loop41:
                    do {
                        int alt41=2;
                        int LA41_0 = input.LA(1);

                        if ( (LA41_0==14) ) {
                            alt41=1;
                        }


                        switch (alt41) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1648:5: otherlv_19= ',' ( (lv_clientservicepport_20_0= ruleClientServicePPort ) )
                    	    {
                    	    otherlv_19=(Token)match(input,14,FOLLOW_27); 

                    	    					newLeafNode(otherlv_19, grammarAccess.getComplexDeviceDriverSWCAccess().getCommaKeyword_6_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1652:5: ( (lv_clientservicepport_20_0= ruleClientServicePPort ) )
                    	    // InternalAutoSAR.g:1653:6: (lv_clientservicepport_20_0= ruleClientServicePPort )
                    	    {
                    	    // InternalAutoSAR.g:1653:6: (lv_clientservicepport_20_0= ruleClientServicePPort )
                    	    // InternalAutoSAR.g:1654:7: lv_clientservicepport_20_0= ruleClientServicePPort
                    	    {

                    	    							newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getClientservicepportClientServicePPortParserRuleCall_6_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_clientservicepport_20_0=ruleClientServicePPort();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"clientservicepport",
                    	    								lv_clientservicepport_20_0,
                    	    								"org.xtext.example.autosar.AutoSAR.ClientServicePPort");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop41;
                        }
                    } while (true);

                    otherlv_21=(Token)match(input,15,FOLLOW_28); 

                    				newLeafNode(otherlv_21, grammarAccess.getComplexDeviceDriverSWCAccess().getRightCurlyBracketKeyword_6_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:1677:3: (otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}' )?
            int alt44=2;
            int LA44_0 = input.LA(1);

            if ( (LA44_0==34) ) {
                alt44=1;
            }
            switch (alt44) {
                case 1 :
                    // InternalAutoSAR.g:1678:4: otherlv_22= 'postreciverport' otherlv_23= '{' ( (lv_postreciverport_24_0= rulePostReciveRPort ) ) (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )* otherlv_27= '}'
                    {
                    otherlv_22=(Token)match(input,34,FOLLOW_4); 

                    				newLeafNode(otherlv_22, grammarAccess.getComplexDeviceDriverSWCAccess().getPostreciverportKeyword_7_0());
                    			
                    otherlv_23=(Token)match(input,12,FOLLOW_29); 

                    				newLeafNode(otherlv_23, grammarAccess.getComplexDeviceDriverSWCAccess().getLeftCurlyBracketKeyword_7_1());
                    			
                    // InternalAutoSAR.g:1686:4: ( (lv_postreciverport_24_0= rulePostReciveRPort ) )
                    // InternalAutoSAR.g:1687:5: (lv_postreciverport_24_0= rulePostReciveRPort )
                    {
                    // InternalAutoSAR.g:1687:5: (lv_postreciverport_24_0= rulePostReciveRPort )
                    // InternalAutoSAR.g:1688:6: lv_postreciverport_24_0= rulePostReciveRPort
                    {

                    						newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getPostreciverportPostReciveRPortParserRuleCall_7_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_postreciverport_24_0=rulePostReciveRPort();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
                    						}
                    						add(
                    							current,
                    							"postreciverport",
                    							lv_postreciverport_24_0,
                    							"org.xtext.example.autosar.AutoSAR.PostReciveRPort");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1705:4: (otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) ) )*
                    loop43:
                    do {
                        int alt43=2;
                        int LA43_0 = input.LA(1);

                        if ( (LA43_0==14) ) {
                            alt43=1;
                        }


                        switch (alt43) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1706:5: otherlv_25= ',' ( (lv_postreciverport_26_0= rulePostReciveRPort ) )
                    	    {
                    	    otherlv_25=(Token)match(input,14,FOLLOW_29); 

                    	    					newLeafNode(otherlv_25, grammarAccess.getComplexDeviceDriverSWCAccess().getCommaKeyword_7_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1710:5: ( (lv_postreciverport_26_0= rulePostReciveRPort ) )
                    	    // InternalAutoSAR.g:1711:6: (lv_postreciverport_26_0= rulePostReciveRPort )
                    	    {
                    	    // InternalAutoSAR.g:1711:6: (lv_postreciverport_26_0= rulePostReciveRPort )
                    	    // InternalAutoSAR.g:1712:7: lv_postreciverport_26_0= rulePostReciveRPort
                    	    {

                    	    							newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getPostreciverportPostReciveRPortParserRuleCall_7_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_postreciverport_26_0=rulePostReciveRPort();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"postreciverport",
                    	    								lv_postreciverport_26_0,
                    	    								"org.xtext.example.autosar.AutoSAR.PostReciveRPort");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop43;
                        }
                    } while (true);

                    otherlv_27=(Token)match(input,15,FOLLOW_30); 

                    				newLeafNode(otherlv_27, grammarAccess.getComplexDeviceDriverSWCAccess().getRightCurlyBracketKeyword_7_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:1735:3: (otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}' )?
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==35) ) {
                alt46=1;
            }
            switch (alt46) {
                case 1 :
                    // InternalAutoSAR.g:1736:4: otherlv_28= 'postrecivepport' otherlv_29= '{' ( (lv_postrecivepport_30_0= rulePostRecivePPort ) ) (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )* otherlv_33= '}'
                    {
                    otherlv_28=(Token)match(input,35,FOLLOW_4); 

                    				newLeafNode(otherlv_28, grammarAccess.getComplexDeviceDriverSWCAccess().getPostrecivepportKeyword_8_0());
                    			
                    otherlv_29=(Token)match(input,12,FOLLOW_31); 

                    				newLeafNode(otherlv_29, grammarAccess.getComplexDeviceDriverSWCAccess().getLeftCurlyBracketKeyword_8_1());
                    			
                    // InternalAutoSAR.g:1744:4: ( (lv_postrecivepport_30_0= rulePostRecivePPort ) )
                    // InternalAutoSAR.g:1745:5: (lv_postrecivepport_30_0= rulePostRecivePPort )
                    {
                    // InternalAutoSAR.g:1745:5: (lv_postrecivepport_30_0= rulePostRecivePPort )
                    // InternalAutoSAR.g:1746:6: lv_postrecivepport_30_0= rulePostRecivePPort
                    {

                    						newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getPostrecivepportPostRecivePPortParserRuleCall_8_2_0());
                    					
                    pushFollow(FOLLOW_7);
                    lv_postrecivepport_30_0=rulePostRecivePPort();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
                    						}
                    						add(
                    							current,
                    							"postrecivepport",
                    							lv_postrecivepport_30_0,
                    							"org.xtext.example.autosar.AutoSAR.PostRecivePPort");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1763:4: (otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) ) )*
                    loop45:
                    do {
                        int alt45=2;
                        int LA45_0 = input.LA(1);

                        if ( (LA45_0==14) ) {
                            alt45=1;
                        }


                        switch (alt45) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1764:5: otherlv_31= ',' ( (lv_postrecivepport_32_0= rulePostRecivePPort ) )
                    	    {
                    	    otherlv_31=(Token)match(input,14,FOLLOW_31); 

                    	    					newLeafNode(otherlv_31, grammarAccess.getComplexDeviceDriverSWCAccess().getCommaKeyword_8_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1768:5: ( (lv_postrecivepport_32_0= rulePostRecivePPort ) )
                    	    // InternalAutoSAR.g:1769:6: (lv_postrecivepport_32_0= rulePostRecivePPort )
                    	    {
                    	    // InternalAutoSAR.g:1769:6: (lv_postrecivepport_32_0= rulePostRecivePPort )
                    	    // InternalAutoSAR.g:1770:7: lv_postrecivepport_32_0= rulePostRecivePPort
                    	    {

                    	    							newCompositeNode(grammarAccess.getComplexDeviceDriverSWCAccess().getPostrecivepportPostRecivePPortParserRuleCall_8_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_7);
                    	    lv_postrecivepport_32_0=rulePostRecivePPort();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getComplexDeviceDriverSWCRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"postrecivepport",
                    	    								lv_postrecivepport_32_0,
                    	    								"org.xtext.example.autosar.AutoSAR.PostRecivePPort");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop45;
                        }
                    } while (true);

                    otherlv_33=(Token)match(input,15,FOLLOW_8); 

                    				newLeafNode(otherlv_33, grammarAccess.getComplexDeviceDriverSWCAccess().getRightCurlyBracketKeyword_8_4());
                    			

                    }
                    break;

            }

            otherlv_34=(Token)match(input,15,FOLLOW_2); 

            			newLeafNode(otherlv_34, grammarAccess.getComplexDeviceDriverSWCAccess().getRightCurlyBracketKeyword_9());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComplexDeviceDriverSWC"


    // $ANTLR start "entryRuleEntity"
    // InternalAutoSAR.g:1801:1: entryRuleEntity returns [EObject current=null] : iv_ruleEntity= ruleEntity EOF ;
    public final EObject entryRuleEntity() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEntity = null;


        try {
            // InternalAutoSAR.g:1801:47: (iv_ruleEntity= ruleEntity EOF )
            // InternalAutoSAR.g:1802:2: iv_ruleEntity= ruleEntity EOF
            {
             newCompositeNode(grammarAccess.getEntityRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleEntity=ruleEntity();

            state._fsp--;

             current =iv_ruleEntity; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEntity"


    // $ANTLR start "ruleEntity"
    // InternalAutoSAR.g:1808:1: ruleEntity returns [EObject current=null] : ( () otherlv_1= 'Entity' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'trigger' ( (lv_trigger_5_0= ruleTrigger ) ) )? (otherlv_6= 'WriteVariable' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'ReadVariable' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' ) ;
    public final EObject ruleEntity() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_17=null;
        Token otherlv_18=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        Enumerator lv_trigger_5_0 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:1814:2: ( ( () otherlv_1= 'Entity' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'trigger' ( (lv_trigger_5_0= ruleTrigger ) ) )? (otherlv_6= 'WriteVariable' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'ReadVariable' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' ) )
            // InternalAutoSAR.g:1815:2: ( () otherlv_1= 'Entity' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'trigger' ( (lv_trigger_5_0= ruleTrigger ) ) )? (otherlv_6= 'WriteVariable' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'ReadVariable' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' )
            {
            // InternalAutoSAR.g:1815:2: ( () otherlv_1= 'Entity' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'trigger' ( (lv_trigger_5_0= ruleTrigger ) ) )? (otherlv_6= 'WriteVariable' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'ReadVariable' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}' )
            // InternalAutoSAR.g:1816:3: () otherlv_1= 'Entity' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'trigger' ( (lv_trigger_5_0= ruleTrigger ) ) )? (otherlv_6= 'WriteVariable' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )? (otherlv_12= 'ReadVariable' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )? otherlv_18= '}'
            {
            // InternalAutoSAR.g:1816:3: ()
            // InternalAutoSAR.g:1817:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getEntityAccess().getEntityAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,37,FOLLOW_3); 

            			newLeafNode(otherlv_1, grammarAccess.getEntityAccess().getEntityKeyword_1());
            		
            // InternalAutoSAR.g:1827:3: ( (lv_name_2_0= ruleEString ) )
            // InternalAutoSAR.g:1828:4: (lv_name_2_0= ruleEString )
            {
            // InternalAutoSAR.g:1828:4: (lv_name_2_0= ruleEString )
            // InternalAutoSAR.g:1829:5: lv_name_2_0= ruleEString
            {

            					newCompositeNode(grammarAccess.getEntityAccess().getNameEStringParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_4);
            lv_name_2_0=ruleEString();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getEntityRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.xtext.example.autosar.AutoSAR.EString");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_32); 

            			newLeafNode(otherlv_3, grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3());
            		
            // InternalAutoSAR.g:1850:3: (otherlv_4= 'trigger' ( (lv_trigger_5_0= ruleTrigger ) ) )?
            int alt47=2;
            int LA47_0 = input.LA(1);

            if ( (LA47_0==38) ) {
                alt47=1;
            }
            switch (alt47) {
                case 1 :
                    // InternalAutoSAR.g:1851:4: otherlv_4= 'trigger' ( (lv_trigger_5_0= ruleTrigger ) )
                    {
                    otherlv_4=(Token)match(input,38,FOLLOW_33); 

                    				newLeafNode(otherlv_4, grammarAccess.getEntityAccess().getTriggerKeyword_4_0());
                    			
                    // InternalAutoSAR.g:1855:4: ( (lv_trigger_5_0= ruleTrigger ) )
                    // InternalAutoSAR.g:1856:5: (lv_trigger_5_0= ruleTrigger )
                    {
                    // InternalAutoSAR.g:1856:5: (lv_trigger_5_0= ruleTrigger )
                    // InternalAutoSAR.g:1857:6: lv_trigger_5_0= ruleTrigger
                    {

                    						newCompositeNode(grammarAccess.getEntityAccess().getTriggerTriggerEnumRuleCall_4_1_0());
                    					
                    pushFollow(FOLLOW_34);
                    lv_trigger_5_0=ruleTrigger();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getEntityRule());
                    						}
                    						set(
                    							current,
                    							"trigger",
                    							lv_trigger_5_0,
                    							"org.xtext.example.autosar.AutoSAR.Trigger");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalAutoSAR.g:1875:3: (otherlv_6= 'WriteVariable' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')' )?
            int alt49=2;
            int LA49_0 = input.LA(1);

            if ( (LA49_0==39) ) {
                alt49=1;
            }
            switch (alt49) {
                case 1 :
                    // InternalAutoSAR.g:1876:4: otherlv_6= 'WriteVariable' otherlv_7= '(' ( ( ruleEString ) ) (otherlv_9= ',' ( ( ruleEString ) ) )* otherlv_11= ')'
                    {
                    otherlv_6=(Token)match(input,39,FOLLOW_16); 

                    				newLeafNode(otherlv_6, grammarAccess.getEntityAccess().getWriteVariableKeyword_5_0());
                    			
                    otherlv_7=(Token)match(input,22,FOLLOW_3); 

                    				newLeafNode(otherlv_7, grammarAccess.getEntityAccess().getLeftParenthesisKeyword_5_1());
                    			
                    // InternalAutoSAR.g:1884:4: ( ( ruleEString ) )
                    // InternalAutoSAR.g:1885:5: ( ruleEString )
                    {
                    // InternalAutoSAR.g:1885:5: ( ruleEString )
                    // InternalAutoSAR.g:1886:6: ruleEString
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getEntityRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getEntityAccess().getWriteVariableVariableCrossReference_5_2_0());
                    					
                    pushFollow(FOLLOW_17);
                    ruleEString();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1900:4: (otherlv_9= ',' ( ( ruleEString ) ) )*
                    loop48:
                    do {
                        int alt48=2;
                        int LA48_0 = input.LA(1);

                        if ( (LA48_0==14) ) {
                            alt48=1;
                        }


                        switch (alt48) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1901:5: otherlv_9= ',' ( ( ruleEString ) )
                    	    {
                    	    otherlv_9=(Token)match(input,14,FOLLOW_3); 

                    	    					newLeafNode(otherlv_9, grammarAccess.getEntityAccess().getCommaKeyword_5_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1905:5: ( ( ruleEString ) )
                    	    // InternalAutoSAR.g:1906:6: ( ruleEString )
                    	    {
                    	    // InternalAutoSAR.g:1906:6: ( ruleEString )
                    	    // InternalAutoSAR.g:1907:7: ruleEString
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getEntityRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getEntityAccess().getWriteVariableVariableCrossReference_5_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_17);
                    	    ruleEString();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop48;
                        }
                    } while (true);

                    otherlv_11=(Token)match(input,23,FOLLOW_35); 

                    				newLeafNode(otherlv_11, grammarAccess.getEntityAccess().getRightParenthesisKeyword_5_4());
                    			

                    }
                    break;

            }

            // InternalAutoSAR.g:1927:3: (otherlv_12= 'ReadVariable' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')' )?
            int alt51=2;
            int LA51_0 = input.LA(1);

            if ( (LA51_0==40) ) {
                alt51=1;
            }
            switch (alt51) {
                case 1 :
                    // InternalAutoSAR.g:1928:4: otherlv_12= 'ReadVariable' otherlv_13= '(' ( ( ruleEString ) ) (otherlv_15= ',' ( ( ruleEString ) ) )* otherlv_17= ')'
                    {
                    otherlv_12=(Token)match(input,40,FOLLOW_16); 

                    				newLeafNode(otherlv_12, grammarAccess.getEntityAccess().getReadVariableKeyword_6_0());
                    			
                    otherlv_13=(Token)match(input,22,FOLLOW_3); 

                    				newLeafNode(otherlv_13, grammarAccess.getEntityAccess().getLeftParenthesisKeyword_6_1());
                    			
                    // InternalAutoSAR.g:1936:4: ( ( ruleEString ) )
                    // InternalAutoSAR.g:1937:5: ( ruleEString )
                    {
                    // InternalAutoSAR.g:1937:5: ( ruleEString )
                    // InternalAutoSAR.g:1938:6: ruleEString
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getEntityRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getEntityAccess().getReadVariableVariableCrossReference_6_2_0());
                    					
                    pushFollow(FOLLOW_17);
                    ruleEString();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalAutoSAR.g:1952:4: (otherlv_15= ',' ( ( ruleEString ) ) )*
                    loop50:
                    do {
                        int alt50=2;
                        int LA50_0 = input.LA(1);

                        if ( (LA50_0==14) ) {
                            alt50=1;
                        }


                        switch (alt50) {
                    	case 1 :
                    	    // InternalAutoSAR.g:1953:5: otherlv_15= ',' ( ( ruleEString ) )
                    	    {
                    	    otherlv_15=(Token)match(input,14,FOLLOW_3); 

                    	    					newLeafNode(otherlv_15, grammarAccess.getEntityAccess().getCommaKeyword_6_3_0());
                    	    				
                    	    // InternalAutoSAR.g:1957:5: ( ( ruleEString ) )
                    	    // InternalAutoSAR.g:1958:6: ( ruleEString )
                    	    {
                    	    // InternalAutoSAR.g:1958:6: ( ruleEString )
                    	    // InternalAutoSAR.g:1959:7: ruleEString
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getEntityRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getEntityAccess().getReadVariableVariableCrossReference_6_3_1_0());
                    	    						
                    	    pushFollow(FOLLOW_17);
                    	    ruleEString();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop50;
                        }
                    } while (true);

                    otherlv_17=(Token)match(input,23,FOLLOW_8); 

                    				newLeafNode(otherlv_17, grammarAccess.getEntityAccess().getRightParenthesisKeyword_6_4());
                    			

                    }
                    break;

            }

            otherlv_18=(Token)match(input,15,FOLLOW_2); 

            			newLeafNode(otherlv_18, grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_7());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEntity"


    // $ANTLR start "entryRuleVariable"
    // InternalAutoSAR.g:1987:1: entryRuleVariable returns [EObject current=null] : iv_ruleVariable= ruleVariable EOF ;
    public final EObject entryRuleVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVariable = null;


        try {
            // InternalAutoSAR.g:1987:49: (iv_ruleVariable= ruleVariable EOF )
            // InternalAutoSAR.g:1988:2: iv_ruleVariable= ruleVariable EOF
            {
             newCompositeNode(grammarAccess.getVariableRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleVariable=ruleVariable();

            state._fsp--;

             current =iv_ruleVariable; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVariable"


    // $ANTLR start "ruleVariable"
    // InternalAutoSAR.g:1994:1: ruleVariable returns [EObject current=null] : ( () otherlv_1= 'Variable' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'type' ( (lv_type_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'value' ( (lv_value_7_0= ruleEJavaObject ) ) )? otherlv_8= '}' ) ;
    public final EObject ruleVariable() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        AntlrDatatypeRuleToken lv_type_5_0 = null;

        AntlrDatatypeRuleToken lv_value_7_0 = null;



        	enterRule();

        try {
            // InternalAutoSAR.g:2000:2: ( ( () otherlv_1= 'Variable' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'type' ( (lv_type_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'value' ( (lv_value_7_0= ruleEJavaObject ) ) )? otherlv_8= '}' ) )
            // InternalAutoSAR.g:2001:2: ( () otherlv_1= 'Variable' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'type' ( (lv_type_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'value' ( (lv_value_7_0= ruleEJavaObject ) ) )? otherlv_8= '}' )
            {
            // InternalAutoSAR.g:2001:2: ( () otherlv_1= 'Variable' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'type' ( (lv_type_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'value' ( (lv_value_7_0= ruleEJavaObject ) ) )? otherlv_8= '}' )
            // InternalAutoSAR.g:2002:3: () otherlv_1= 'Variable' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' (otherlv_4= 'type' ( (lv_type_5_0= ruleEJavaClass ) ) )? (otherlv_6= 'value' ( (lv_value_7_0= ruleEJavaObject ) ) )? otherlv_8= '}'
            {
            // InternalAutoSAR.g:2002:3: ()
            // InternalAutoSAR.g:2003:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getVariableAccess().getVariableAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,41,FOLLOW_3); 

            			newLeafNode(otherlv_1, grammarAccess.getVariableAccess().getVariableKeyword_1());
            		
            // InternalAutoSAR.g:2013:3: ( (lv_name_2_0= ruleEString ) )
            // InternalAutoSAR.g:2014:4: (lv_name_2_0= ruleEString )
            {
            // InternalAutoSAR.g:2014:4: (lv_name_2_0= ruleEString )
            // InternalAutoSAR.g:2015:5: lv_name_2_0= ruleEString
            {

            					newCompositeNode(grammarAccess.getVariableAccess().getNameEStringParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_4);
            lv_name_2_0=ruleEString();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getVariableRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.xtext.example.autosar.AutoSAR.EString");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_36); 

            			newLeafNode(otherlv_3, grammarAccess.getVariableAccess().getLeftCurlyBracketKeyword_3());
            		
            // InternalAutoSAR.g:2036:3: (otherlv_4= 'type' ( (lv_type_5_0= ruleEJavaClass ) ) )?
            int alt52=2;
            int LA52_0 = input.LA(1);

            if ( (LA52_0==42) ) {
                alt52=1;
            }
            switch (alt52) {
                case 1 :
                    // InternalAutoSAR.g:2037:4: otherlv_4= 'type' ( (lv_type_5_0= ruleEJavaClass ) )
                    {
                    otherlv_4=(Token)match(input,42,FOLLOW_14); 

                    				newLeafNode(otherlv_4, grammarAccess.getVariableAccess().getTypeKeyword_4_0());
                    			
                    // InternalAutoSAR.g:2041:4: ( (lv_type_5_0= ruleEJavaClass ) )
                    // InternalAutoSAR.g:2042:5: (lv_type_5_0= ruleEJavaClass )
                    {
                    // InternalAutoSAR.g:2042:5: (lv_type_5_0= ruleEJavaClass )
                    // InternalAutoSAR.g:2043:6: lv_type_5_0= ruleEJavaClass
                    {

                    						newCompositeNode(grammarAccess.getVariableAccess().getTypeEJavaClassParserRuleCall_4_1_0());
                    					
                    pushFollow(FOLLOW_37);
                    lv_type_5_0=ruleEJavaClass();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getVariableRule());
                    						}
                    						set(
                    							current,
                    							"type",
                    							lv_type_5_0,
                    							"org.xtext.example.autosar.AutoSAR.EJavaClass");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalAutoSAR.g:2061:3: (otherlv_6= 'value' ( (lv_value_7_0= ruleEJavaObject ) ) )?
            int alt53=2;
            int LA53_0 = input.LA(1);

            if ( (LA53_0==43) ) {
                alt53=1;
            }
            switch (alt53) {
                case 1 :
                    // InternalAutoSAR.g:2062:4: otherlv_6= 'value' ( (lv_value_7_0= ruleEJavaObject ) )
                    {
                    otherlv_6=(Token)match(input,43,FOLLOW_38); 

                    				newLeafNode(otherlv_6, grammarAccess.getVariableAccess().getValueKeyword_5_0());
                    			
                    // InternalAutoSAR.g:2066:4: ( (lv_value_7_0= ruleEJavaObject ) )
                    // InternalAutoSAR.g:2067:5: (lv_value_7_0= ruleEJavaObject )
                    {
                    // InternalAutoSAR.g:2067:5: (lv_value_7_0= ruleEJavaObject )
                    // InternalAutoSAR.g:2068:6: lv_value_7_0= ruleEJavaObject
                    {

                    						newCompositeNode(grammarAccess.getVariableAccess().getValueEJavaObjectParserRuleCall_5_1_0());
                    					
                    pushFollow(FOLLOW_8);
                    lv_value_7_0=ruleEJavaObject();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getVariableRule());
                    						}
                    						set(
                    							current,
                    							"value",
                    							lv_value_7_0,
                    							"org.xtext.example.autosar.AutoSAR.EJavaObject");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_8=(Token)match(input,15,FOLLOW_2); 

            			newLeafNode(otherlv_8, grammarAccess.getVariableAccess().getRightCurlyBracketKeyword_6());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVariable"


    // $ANTLR start "entryRuleEJavaClass"
    // InternalAutoSAR.g:2094:1: entryRuleEJavaClass returns [String current=null] : iv_ruleEJavaClass= ruleEJavaClass EOF ;
    public final String entryRuleEJavaClass() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleEJavaClass = null;


        try {
            // InternalAutoSAR.g:2094:50: (iv_ruleEJavaClass= ruleEJavaClass EOF )
            // InternalAutoSAR.g:2095:2: iv_ruleEJavaClass= ruleEJavaClass EOF
            {
             newCompositeNode(grammarAccess.getEJavaClassRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleEJavaClass=ruleEJavaClass();

            state._fsp--;

             current =iv_ruleEJavaClass.getText(); 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEJavaClass"


    // $ANTLR start "ruleEJavaClass"
    // InternalAutoSAR.g:2101:1: ruleEJavaClass returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'EJavaClass' ;
    public final AntlrDatatypeRuleToken ruleEJavaClass() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalAutoSAR.g:2107:2: (kw= 'EJavaClass' )
            // InternalAutoSAR.g:2108:2: kw= 'EJavaClass'
            {
            kw=(Token)match(input,44,FOLLOW_2); 

            		current.merge(kw);
            		newLeafNode(kw, grammarAccess.getEJavaClassAccess().getEJavaClassKeyword());
            	

            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEJavaClass"


    // $ANTLR start "entryRuleEJavaObject"
    // InternalAutoSAR.g:2116:1: entryRuleEJavaObject returns [String current=null] : iv_ruleEJavaObject= ruleEJavaObject EOF ;
    public final String entryRuleEJavaObject() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleEJavaObject = null;


        try {
            // InternalAutoSAR.g:2116:51: (iv_ruleEJavaObject= ruleEJavaObject EOF )
            // InternalAutoSAR.g:2117:2: iv_ruleEJavaObject= ruleEJavaObject EOF
            {
             newCompositeNode(grammarAccess.getEJavaObjectRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleEJavaObject=ruleEJavaObject();

            state._fsp--;

             current =iv_ruleEJavaObject.getText(); 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEJavaObject"


    // $ANTLR start "ruleEJavaObject"
    // InternalAutoSAR.g:2123:1: ruleEJavaObject returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'EJavaObject' ;
    public final AntlrDatatypeRuleToken ruleEJavaObject() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalAutoSAR.g:2129:2: (kw= 'EJavaObject' )
            // InternalAutoSAR.g:2130:2: kw= 'EJavaObject'
            {
            kw=(Token)match(input,45,FOLLOW_2); 

            		current.merge(kw);
            		newLeafNode(kw, grammarAccess.getEJavaObjectAccess().getEJavaObjectKeyword());
            	

            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEJavaObject"


    // $ANTLR start "ruleTrigger"
    // InternalAutoSAR.g:2138:1: ruleTrigger returns [Enumerator current=null] : ( (enumLiteral_0= 'TIME' ) | (enumLiteral_1= 'VARIABLE' ) ) ;
    public final Enumerator ruleTrigger() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;


        	enterRule();

        try {
            // InternalAutoSAR.g:2144:2: ( ( (enumLiteral_0= 'TIME' ) | (enumLiteral_1= 'VARIABLE' ) ) )
            // InternalAutoSAR.g:2145:2: ( (enumLiteral_0= 'TIME' ) | (enumLiteral_1= 'VARIABLE' ) )
            {
            // InternalAutoSAR.g:2145:2: ( (enumLiteral_0= 'TIME' ) | (enumLiteral_1= 'VARIABLE' ) )
            int alt54=2;
            int LA54_0 = input.LA(1);

            if ( (LA54_0==46) ) {
                alt54=1;
            }
            else if ( (LA54_0==47) ) {
                alt54=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 54, 0, input);

                throw nvae;
            }
            switch (alt54) {
                case 1 :
                    // InternalAutoSAR.g:2146:3: (enumLiteral_0= 'TIME' )
                    {
                    // InternalAutoSAR.g:2146:3: (enumLiteral_0= 'TIME' )
                    // InternalAutoSAR.g:2147:4: enumLiteral_0= 'TIME'
                    {
                    enumLiteral_0=(Token)match(input,46,FOLLOW_2); 

                    				current = grammarAccess.getTriggerAccess().getTIMEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_0, grammarAccess.getTriggerAccess().getTIMEEnumLiteralDeclaration_0());
                    			

                    }


                    }
                    break;
                case 2 :
                    // InternalAutoSAR.g:2154:3: (enumLiteral_1= 'VARIABLE' )
                    {
                    // InternalAutoSAR.g:2154:3: (enumLiteral_1= 'VARIABLE' )
                    // InternalAutoSAR.g:2155:4: enumLiteral_1= 'VARIABLE'
                    {
                    enumLiteral_1=(Token)match(input,47,FOLLOW_2); 

                    				current = grammarAccess.getTriggerAccess().getVARIABLEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_1, grammarAccess.getTriggerAccess().getVARIABLEEnumLiteralDeclaration_1());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTrigger"

    // Delegated rules


 

    public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x000000000000A000L});
    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000001040000000L});
    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x000000000000C000L});
    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000068000L});
    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000048000L});
    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000001308000L});
    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000001208000L});
    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000804000L});
    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000001008000L});
    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x000000000C108000L});
    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x000000000C008000L});
    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000008008000L});
    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000F80008000L});
    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000F00008000L});
    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000E00008000L});
    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000C00008000L});
    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000800008000L});
    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x000001C000008000L});
    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000C00000000000L});
    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000018000008000L});
    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000010000008000L});
    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x00000C0000008000L});
    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000080000008000L});
    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000200000000000L});

}